MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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」という標準的なフォーマットで渡すことです。

  1. JavaでMySQLデータベースにデータを挿入する方法をわかりやすく解説

    JavaからMySQLデータベースにデータを挿入するには、SQLのINSERTコマンドを使用します。基本的な構文は以下の通りです。 INSERT INTO テーブル名(カラム名1, カラム名2, ......カラム名N) VALUES(値1, 値2, ......値N); ここからは、Javaプログラムを使って実際にMySQLデータベースへレコードを挿入する手順を、順を追って見ていきましょう。 ステップ1:MySQLでテーブルを作成する まず、データの挿入先となるテーブルをMySQL側に作成します。以下のクエリを実行してください。 mysql> create table Insert

  2. Javaを使ってDATE型の値をMySQLカラムに挿入する方法【PreparedStatement活用】

    はじめに JavaからMySQLのDATE型カラムに日付データを挿入したい場合、PreparedStatementを使用するのが最も安全で推奨される方法です。SQLインジェクション対策にもなり、日付型の変換もスムーズに行えます。 本記事では、Javaプログラムから現在の日付をMySQLテーブルに挿入する手順を、サンプルコード付きでわかりやすく解説します。 1. サンプルテーブルの作成 まず、DATE型のカラム「ArrivalDate」を含むテーブルを作成します。以下はMySQLでの作成例です。 mysql> create table DemoTable( PassengerId