MySQLはDATE型カラムに日付と時刻の値を格納できるか?評価方法を解説
ご存じのとおり、MySQLのDATEデータ型におけるデフォルトの形式は「YYYY-MM-DD」です。この形式には時刻(時間)の情報を格納する仕組みがありません。
しかし、DATEデータ型のカラムに対して、日付とともに時刻の値を格納しようとした場合でも、エラーにはなりません。MySQLは警告(Warning)を表示したうえで、そのカラムには日付の値のみを格納します。以下の例で具体的な動作を確認してみましょう。
実行例
mysql> Create table date_time_test(date DATE);
Query OK, 0 rows affected (0.44 sec)
mysql> Insert into date_time_test(date) values('2017-09-09 09:34:21');
Query OK, 1 row affected, 1 warning (0.03 sec)
mysql> Select * from date_time_test;
+------------+
| date |
+------------+
| 2017-09-09 |
+------------+
1 row in set (0.00 sec)
上記の例を見ると、INSERT文では「2017-09-09 09:34:21」という日付+時刻の値を指定していますが、「1 row affected, 1 warning」と表示されていることがわかります。これは、時刻部分が切り捨てられたことを示す警告です。
そしてSELECT文で確認すると、格納されているのは日付部分である「2017-09-09」のみであり、時刻の値は失われています。つまり、MySQLはDATE型カラムへの挿入時に時刻の値を自動的に無視して評価するのです。
補足:日付と時刻の両方を扱いたい場合
日付と時刻の両方を正確に格納したい場合は、DATE型ではなくDATETIME型またはTIMESTAMP型を使用してください。これらの型は「YYYY-MM-DD HH:MM:SS」という形式で、日付と時刻を同時に保持できます。
-
Javaを使ってDATE型の値をMySQLカラムに挿入する方法【PreparedStatement活用】
はじめに JavaからMySQLのDATE型カラムに日付データを挿入したい場合、PreparedStatementを使用するのが最も安全で推奨される方法です。SQLインジェクション対策にもなり、日付型の変換もスムーズに行えます。 本記事では、Javaプログラムから現在の日付をMySQLテーブルに挿入する手順を、サンプルコード付きでわかりやすく解説します。 1. サンプルテーブルの作成 まず、DATE型のカラム「ArrivalDate」を含むテーブルを作成します。以下はMySQLでの作成例です。 mysql> create table DemoTable( PassengerId
-
MySQLクエリで日付・時刻の値を秒単位で加算(インクリメント)する方法
MySQLで日付・時刻(DATETIME)の値に指定した秒数を加算したい場合は、DATE_ADD()関数とINTERVAL句を組み合わせて使用します。この記事では、実際にテーブルを作成し、秒単位で時刻をインクリメントする手順を具体例とともに解説します。 サンプルテーブルの作成 まず、DATETIME型のカラムを持つテーブルを作成しましょう。 mysql> create table DemoTable1867 ( ArrivalTime datetime &