タイムスタンプを MySQL テーブルに挿入する
- MySQL テーブルを作成する
-
NOW()
を使用してタイムスタンプを MySQL テーブルに挿入する -
CURRENT_TIMESTAMP()
を使用してタイムスタンプを MySQL テーブルに挿入する -
MySQL テーブルの
TIMESTAMP
タイプ列に Null またはデフォルト値を設定する
今日は、テーブル定義に基づいて、MySQL テーブルの TIMESTAMP
型の列に日付と時刻を挿入する方法を学びます。
MySQL テーブルを作成する
まず、このチュートリアルで使用するテーブルを作成します。
コード例:
CREATE TABLE demo_one(
demo_one_id INT NOT NULL,
demo_one_timestamp TIMESTAMP NOT NULL,
PRIMARY KEY(demo_one_id)
);
テーブル定義について詳しく知るには、次のように DESCRIBE
を使用します。
クエリ:
DESCRIBE demo_one;
出力:
+--------------------+-----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+-----------+------+-----+---------+-------+
| demo_one_id | int | NO | PRI | NULL | |
| demo_one_timestamp | timestamp | NO | | NULL | |
+--------------------+-----------+------+-----+---------+-------+
2 rows in set (0.08 sec)
両方の属性が NULL
値を受け入れず、デフォルト値がないことがわかります。 これは、両方の列に値を挿入する必要があることを意味します。
NOW()
を使用してタイムスタンプを MySQL テーブルに挿入する
TIMESTAMP を MySQL テーブルに挿入する最初の方法は NOW()
です。
クエリ:
INSERT INTO demo_one (demo_one_id, demo_one_timestamp)
VALUES
(1, NOW());
SELECT
ステートメントを使用して、現在のテーブル データを表示します。
クエリ:
SELECT * FROM demo_one;
出力:
+-------------+---------------------+
| demo_one_id | demo_one_timestamp |
+-------------+---------------------+
| 1 | 2022-05-14 11:04:11 |
+-------------+---------------------+
1 row in set (0.00 sec)
CURRENT_TIMESTAMP()
を使用してタイムスタンプを MySQL テーブルに挿入する
CURRENT_TIMESTAMP()
メソッドを使用して、前に作成した MySQL テーブルに TIMESTAMP を挿入することもできます。
クエリ:
INSERT INTO demo_onE (demo_one_id, demo_one_timestamp)
VALUES
(2, CURRENT_TIMESTAMP());
以下のように SELECT
ステートメントを使用して、テーブルのデータを表示できます。
クエリ:
SELECT * FROM demo_one;
出力:
+-------------+---------------------+
| demo_one_id | demo_one_timestamp |
+-------------+---------------------+
| 1 | 2022-05-14 11:04:11 |
| 2 | 2022-05-14 11:06:01 |
+-------------+---------------------+
2 rows in set (0.03 sec)
MySQL テーブルの TIMESTAMP
タイプ列に Null またはデフォルト値を設定する
TIMESTAMP
型の列に値を挿入したくない場合は、2つの方法でそれを行うことができます。 NULL
値を受け入れるように列を設定するか、列のデフォルト値を設定します。
コード例 (demo_two_timestamp
フィールドの null
値を受け入れます):
CREATE TABLE demo_two(
demo_two_id INT NOT NULL,
# we can also write the following column definition
# as `demo_two_timestamp TIMESTAMP NULL`
demo_two_timestamp TIMESTAMP,
PRIMARY KEY(demo_two_id)
);
INSERT INTO demo_two (demo_two_id, demo_two_timestamp) VALUES (1,null), (2, NOW());
SELECT * FROM demo_two;
出力:
+-------------+---------------------+
| demo_two_id | demo_two_timestamp |
+-------------+---------------------+
| 1 | NULL |
| 2 | 2022-05-14 11:15:18 |
+-------------+---------------------+
2 rows in set (0.04 sec)
ここで、demo_two_timestamp
列に値を挿入したくない場合は、NULL
を使用できます。 特定のレコードに NULL
を持たせたくない場合は、NOW()
または CURRENT_TIMESTAMP()
を使用して正しい値を挿入する柔軟性もあります。
コード例 (demo_three_timestamp
フィールドのデフォルト値を設定):
CREATE TABLE demo_three(
demo_three_id INT NOT NULL,
demo_three_timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(demo_three_id)
);
INSERT INTO demo_three (demo_three_id) VALUES (1);
INSERT INTO demo_three (demo_three_id, demo_three_timestamp) VALUES (2, NOW());
INSERT INTO demo_three (demo_three_id, demo_three_timestamp)
VALUES (3, CURRENT_TIMESTAMP());
SELECT * FROM demo_three;
出力:
+---------------+----------------------+
| demo_three_id | demo_three_timestamp |
+---------------+----------------------+
| 1 | 2022-05-14 11:21:57 |
| 2 | 2022-05-14 11:22:20 |
| 3 | 2022-05-14 11:22:40 |
+---------------+----------------------+
3 rows in set (0.00 sec)
demo_three_timestamp
列の値を入力したくない場合、または NULL
を使用したくない場合は、上記の例で示したように、DEFAULT CURRENT_TIMESTAMP
を使用してデフォルト値を設定できます。
関連記事 - MySQL Table
- MySQL テーブルから最初の行を選択する
- MySQL テーブルのすべての行をループする
- MySQL でデータをコピーせずにテーブル構造をコピーする
- MySQL で最後に挿入されたレコードの ID を取得する
- MySQL の 2つのテーブルの違い
- MySQL のテーブルとデータベース構造を表示