SQL Date 関数

SQL 日期

日付を処理する際には、最も難しいタスクは、挿入する日付のフォーマットがデータベースの日付カラムのフォーマットと一致することを確実にすることかもしれません。

データが含むのは日付部分だけなら、クエリの実行には問題がありません。しかし、時間が関与する場合は少し複雑になります。

日付クエリの複雑さについて議論する前に、最も重要な内蔵日付処理関数を見てみましょう。

MySQL Date 関数

以下のテーブルには、MySQLで最も重要な内蔵日付関数が示されています:

関数 説明
NOW() 現在の日付と時間を返す
CURDATE() 現在の日付を返す
CURTIME() 現在の時間を返す
DATE() 日付または日付/時間表現の日付部分を抽出する
EXTRACT() 日付/時間の単独の部分を返す
DATE_ADD() 日付に指定された時間間隔を加える
DATE_SUB() 日付から指定された時間間隔を減らす
DATEDIFF() 二つの日付の間の日数を返す
DATE_FORMAT() 異なるフォーマットで日付/時間を表示する

SQL Server Date 関数

以下のテーブルには、SQL Serverで最も重要な内蔵日付関数が示されています:

関数 説明
GETDATE() 現在の日付と時間を返す
DATEPART() 日付/時間の単独の部分を返す
DATEADD() 日付に指定された時間間隔を加えたり減らしたりする
DATEDIFF() 二つの日付の間の時間を返す
CONVERT() 異なるフォーマットで日付/時間を表示する

SQL Date データタイプ

MySQLは以下のデータタイプを使用してデータベースに日付または日付/時間値を保存します:

  • DATE - フォーマット YYYY-MM-DD
  • DATETIME - フォーマット: YYYY-MM-DD HH:MM:SS
  • TIMESTAMP - フォーマット: YYYY-MM-DD HH:MM:SS
  • YEAR - フォーマット YYYY または YY

SQL Server は以下のデータ型を使用してデータベースに日付または日付/時間値を格納します:

  • DATE - フォーマット YYYY-MM-DD
  • DATETIME - フォーマット: YYYY-MM-DD HH:MM:SS
  • SMALLDATETIME - フォーマット: YYYY-MM-DD HH:MM:SS
  • TIMESTAMP - フォーマット: 独自の数字

SQL 日期処理

時間部分が含まれていない場合、2つの日付を簡単に比較できます!

以下の「Orders」テーブルがあると仮定します:

OrderId ProductName OrderDate
1 computer 2008-12-26
2 printer 2008-12-26
3 electrograph 2008-11-12
4 telephone 2008-10-19

今、表から「2008-12-26」の OrderDate が含まれるレコードを選択したいと考えています。

以下の SELECT 文を使用します:

SELECT * FROM Orders WHERE OrderDate='2008-12-26'

結果セット:

OrderId ProductName OrderDate
1 computer 2008-12-26
3 electrograph 2008-12-26

現在、「Orders」クラスが以下のようになっていると仮定します(「OrderDate」カラムの時間部分に注意してください):

OrderId ProductName OrderDate
1 computer 2008-12-26 16:23:55
2 printer 2008-12-26 10:45:26
3 electrograph 2008-11-12 14:12:08
4 telephone 2008-10-19 12:56:10

以下の SELECT 文を使用する場合:

SELECT * FROM Orders WHERE OrderDate='2008-12-26'

それでは、結果が得られません。これは、クエリに時間部分のない日付が含まれていないためです。

ヒント:クエリをシンプルでメンテナンスしやすいにする場合は、日付を使用する際に時間部分を使用しないでください!