MySQLは日付を処理します
MySQLの日付
日付を操作するときに最も難しいのは、挿入しようとしている日付の形式がデータベースの日付列の形式と一致していることを確認することです。
データに日付部分のみが含まれている限り、クエリは期待どおりに機能します。ただし、時間の部分が含まれる場合、それはより複雑になります。
MySQLの日付データ型
MySQLには、データベースに日付または日付/時刻の値を格納するための次のデータ型が付属しています。
-
DATE
-フォーマットYYYY-MM-DD -
DATETIME
-フォーマット:YYYY-MM-DD HH:MI:SS TIMESTAMP
-フォーマット:YYYY-MM-DD HH:MI:SS-
YEAR
-フォーマットYYYYまたはYY
注:データベースに新しいテーブルを作成すると、日付データ型が列に設定されます。
日付の操作
次の表を見てください。
注文表
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 |
2 | Camembert Pierrot | 2008-11-09 |
3 | Mozzarella di Giovanni | 2008-11-11 |
4 | Mascarpone Fabioli | 2008-10-29 |
次に、上の表からOrderDateが「2008-11-11」のレコードを選択します。
SELECT
次のステートメントを使用します。
SELECT * FROM Orders WHERE OrderDate='2008-11-11'
結果セットは次のようになります。
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 |
3 | Mozzarella di Giovanni | 2008-11-11 |
注:時間コンポーネントが含まれていない場合、2つの日付を簡単に比較できます。
ここで、「Orders」テーブルが次のようになっていると仮定します(「OrderDate」列に追加された時間コンポーネントに注意してください)。
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 13:23:44 |
2 | Camembert Pierrot | 2008-11-09 15:45:21 |
3 | Mozzarella di Giovanni | 2008-11-11 11:12:01 |
4 | Mascarpone Fabioli | 2008-10-29 14:56:59 |
上記と同じSELECT
ステートメントを使用する場合:
SELECT * FROM Orders WHERE OrderDate='2008-11-11'
結果は得られません!これは、クエリが時間部分のない日付のみを検索しているためです。
ヒント:クエリをシンプルで保守しやすいものにするために、必要な場合を除いて、日付に時間コンポーネントを使用しないでください。