ホームページ >データベース >mysql チュートリアル >日時処理関数と数値処理関数の例(データ処理関数の使い方2)

日時処理関数と数値処理関数の例(データ処理関数の使い方2)

巴扎黑
巴扎黑オリジナル
2017-05-05 17:06:411515ブラウズ

日付と時刻の処理関数

日付と時刻は、対応するデータ型と特別な形式で保存されるため、迅速かつ効果的に並べ替えやフィルター処理を行うことができ、物理的なストレージ領域を節約できます。

一般に、アプリケーションは日付と時刻を保存するための形式を使用しないため、これらの値の読み取りと処理には常に日付と時刻の関数が使用されます。このため、日付と時刻の関数は MySQL 言語で重要な役割を果たします。

次の表に、一般的に使用される日付と時刻の処理関数をいくつか示します:

日時処理関数と数値処理関数の例(データ処理関数の使い方2)

これは、データをフィルターする場所を確認する良い機会です。これまでは、数値とテキストを比較する where 句を使用してデータをフィルタリングしてきましたが、多くの場合、データは日付でフィルタリングする必要があります。日付によるフィルタリングには、いくつかの追加の考慮事項と特別な MySQL 関数の使用が必要です。

最初に注意すべきことは、MySQL で使用される日付形式です。テーブル値を挿入または更新する場合でも、where 句を使用してフィルタリングする場合でも、日付を指定する場合は常に、日付は yyyy-mm-dd の形式である必要があります。したがって、2005 年 9 月 1 日は 2005-09-01 となります。他の日付形式も使用できますが、曖昧さを排除できるため、これが推奨される日付形式です (たとえば、04/05/06 は 2006 年 5 月 4 日または 4 月 5 日です)。 2006 年または 2004 年 5 月 6 日または...)。

常に 4 桁の年を使用する必要があります。2 桁の年はサポートされており、MySQL は 00 ~ 69 を 2000 ~ 2069 として、70 ~ 99 を 1970 ~ 1999 として処理します。これらは意図された年である可能性がありますが、MySQL は何も仮定する必要がないため、完全な 4 桁の年を使用する方が信頼性が高くなります。

したがって、基本的な日付比較は単純である必要があります:

入力:

select cust_id,order_num from orders where order_date = '2005-09-01';

出力:

日時処理関数と数値処理関数の例(データ処理関数の使い方2)

分析: この select ステートメントは正常に機能します。 order_date が 2005-09-01 である注文レコードを取得します。

しかし、where order_date = '2005-09-01' の使用は信頼できるのでしょうか? order_date のデータ型は datetime です。この型には日付と時刻の値が格納されます。サンプル テーブルの値はすべて 00:00:00 の時間値を持ちますが、実際にはこれが常に当てはまるわけではありません。注文日を現在の日時で保存するとどうなりますか?たとえば、格納されている order_date 値が 2005-09-01 11:30:05 の場合、where order_date = '2005-09-01' は失敗します。その日付の行が与えられたとしても、where の一致が失敗するため、その行は取得されません。

解決策は、指定された日付を列値全体と比較するのではなく、指定された日付を列内の日付部分とのみ比較するように MySQL に指示することです。この目的のために、date() 関数を使用する必要があります。 Date(order_date) は、カラムの日付部分のみを抽出するように MySQL に指示します。対応する列に日付のみが含まれていることを知る場合も同様です。こうすることで、何らかの理由で後でテーブルに日付と時刻の値が存在する場合でも、SQL コードを変更する必要がなくなります。もちろん、Time() 関数もあります。これは、時刻だけが必要な場合に使用する必要があります。

Date() と Time() はどちらも MySQL 4.1.1 で最初に導入されました。

日付の等価性をテストする方法を理解すると、他の演算子の使用法が明確になります。

ただし、説明が必要な別の種類の日付比較があります。 2005 年 9 月に行われたすべての注文を取得したい場合はどうすればよいでしょうか?単純な等価性テストは、月の日数も一致する必要があるため機能しません。いくつかの解決策がありますが、そのうちの 1 つは次のとおりです:

入力:

select cust_id,order_num from orders where Date(order_date) = '2005-09-01';

出力:

分析: その中で、behind 演算子を使用して 2005-09-01 と 2005-09-30 を次のように定義します。一致する日付範囲。

日時処理関数と数値処理関数の例(データ処理関数の使い方2)


数値処理関数

数値処理関数は数値データのみを処理します。これらの関数は通常、主に代数、三角関数、幾何学演算に使用されるため、文字列や日付時刻処理関数ほど頻繁には使用されません。 皮肉なことに、主要な DBMS の関数の中で、数値関数が最も一貫性があり、均一です。次の表に、一般的に使用される数値処理関数をいくつか示します:

以上が日時処理関数と数値処理関数の例(データ処理関数の使い方2)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。