MySQLのTIMESTAMP型フィールドに任意の日付を挿入する方法
MySQLでTIMESTAMP型のカラムに特定の日時を登録したい場合、UNIX_TIMESTAMP()関数を使うのは避けましょう。UNIX_TIMESTAMP()は日付を整数値(エポック秒)として返すため、TIMESTAMP型のカラムには適していません。
UNIX_TIMESTAMP()が返す値を確認する
まず、UNIX_TIMESTAMP()関数がどのような値を返すのか確認してみます。以下のクエリを実行してください。
mysql> select UNIX_TIMESTAMP('2019-01-09 15:48:23') AS IntegerValue;実行結果は次のとおりです。
+--------------+ | IntegerValue | +--------------+ | 1547029103 | +--------------+ 1 row in set (0.00 sec)
このように、UNIX_TIMESTAMP()関数は指定した日時に対応する整数値を返します。つまり、日付そのものではなく数値として扱われるため、TIMESTAMP型カラムへの挿入には向いていません。
TIMESTAMP型カラムにカスタム日付を挿入する構文
TIMESTAMP型のカラムに任意の日時を挿入する場合は、単純に文字列形式で日時を指定するだけでOKです。基本の構文は以下のとおりです。
INSERT INTO テーブル名(カラム名) values('任意の日時');サンプルテーブルを作成する
それでは、実際に動作を確認するためにテーブルを作成してみましょう。テーブル作成用のクエリは次のとおりです。
mysql> create table TimestampDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> yourTimestamp TIMESTAMP,
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (2.14 sec)AUTO_INCREMENTのIdカラムと、TIMESTAMP型のyourTimestampカラムを持つシンプルなテーブルです。
カスタム日付を挿入する
TIMESTAMP型フィールドに任意の日付を挿入するには、以下のようなクエリを実行します。
mysql> insert into TimestampDemo(yourTimestamp) values('2019-01-09 15:48:23');
Query OK, 1 row affected (0.37 sec)
mysql> insert into TimestampDemo(yourTimestamp) values('2018-03-14 16:04:23');
Query OK, 1 row affected (0.37 sec)
mysql> insert into TimestampDemo(yourTimestamp) values('2017-12-10 10:08:20');
Query OK, 1 row affected (0.16 sec)
mysql> insert into TimestampDemo(yourTimestamp) values('2016-04-05 13:45:21');
Query OK, 1 row affected (0.30 sec)このように、「YYYY-MM-DD HH:MM:SS」形式の文字列をそのまま渡すだけで、MySQLが自動的にTIMESTAMP型として解釈してくれます。
挿入したレコードを確認する
SELECT文を使って、テーブル内のすべてのレコードを表示してみましょう。クエリは以下のとおりです。
mysql> select *from TimestampDemo;
実行結果は次のとおりです。
+----+---------------------+ | Id | yourTimestamp | +----+---------------------+ | 1 | 2019-01-09 15:48:23 | | 2 | 2018-03-14 16:04:23 | | 3 | 2017-12-10 10:08:20 | | 4 | 2016-04-05 13:45:21 | +----+---------------------+ 4 rows in set (0.00 sec)
このように、TIMESTAMP型のカラムにはUNIX_TIMESTAMP()を使わず、日時を表す文字列を直接INSERTすることで、任意の日付を簡単に登録できます。ポイントは「YYYY-MM-DD HH:MM:SS」という標準的なフォーマットで渡すことです。
-
JavaでMySQLデータベースにデータを挿入する方法をわかりやすく解説
JavaからMySQLデータベースにデータを挿入するには、SQLのINSERTコマンドを使用します。基本的な構文は以下の通りです。 INSERT INTO テーブル名(カラム名1, カラム名2, ......カラム名N) VALUES(値1, 値2, ......値N); ここからは、Javaプログラムを使って実際にMySQLデータベースへレコードを挿入する手順を、順を追って見ていきましょう。 ステップ1:MySQLでテーブルを作成する まず、データの挿入先となるテーブルをMySQL側に作成します。以下のクエリを実行してください。 mysql> create table Insert
-
Javaを使ってDATE型の値をMySQLカラムに挿入する方法【PreparedStatement活用】
はじめに JavaからMySQLのDATE型カラムに日付データを挿入したい場合、PreparedStatementを使用するのが最も安全で推奨される方法です。SQLインジェクション対策にもなり、日付型の変換もスムーズに行えます。 本記事では、Javaプログラムから現在の日付をMySQLテーブルに挿入する手順を、サンプルコード付きでわかりやすく解説します。 1. サンプルテーブルの作成 まず、DATE型のカラム「ArrivalDate」を含むテーブルを作成します。以下はMySQLでの作成例です。 mysql> create table DemoTable( PassengerId