MySQLで他のカラムに値を挿入する際、現在の日時を自動的に登録する方法(DEFAULT CURRENT_TIMESTAMP)
MySQLでは、テーブル作成時に特定のカラムを DEFAULT CURRENT_TIMESTAMP として定義しておくことで、別のカラムに値を挿入したタイミングで、そのカラムへ現在の日付と時刻を自動的に記録できます。レコードの作成日時を管理したい場合に非常に便利な機能です。
DEFAULT CURRENT_TIMESTAMP の基本的な使い方
以下の例では、「StudentName(学生名)」と「RegDate(登録日時)」の2つのカラムを持つ「testing」というテーブルを作成します。RegDate カラムには DEFAULT CURRENT_TIMESTAMP を指定しています。
mysql> CREATE TABLE testing
-> (
-> StudentName varchar(20) NOT NULL,
-> RegDate TIMESTAMP DEFAULT CURRENT_TIMESTAMP
-> );
Query OK, 0 rows affected (0.49 sec)このクエリにより、RegDate カラムが現在の日時をデフォルト値として持つテーブルが作成されます。以降、INSERT文で StudentName カラムに値を追加するだけで、RegDate カラムには明示的に指定しなくても、実行時点の日付と時刻が自動的に格納されます。
データ挿入と動作確認
実際にデータを挿入して、自動的に日時が記録されるか確認してみましょう。
mysql> INSERT INTO testing(StudentName) VALUES ('Ram');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO testing(StudentName) VALUES ('Shyam');
Query OK, 1 row affected (0.06 sec)
mysql> SELECT * FROM testing;
+-------------+---------------------+
| StudentName | RegDate |
+-------------+---------------------+
| Ram | 2017-10-28 21:24:24 |
| Shyam | 2017-10-28 21:24:30 |
+-------------+---------------------+
2 rows in set (0.02 sec)
mysql> INSERT INTO testing(StudentName) VALUES ('Mohan');
Query OK, 1 row affected (0.06 sec)
mysql> SELECT * FROM testing;
+-------------+---------------------+
| StudentName | RegDate |
+-------------+---------------------+
| Ram | 2017-10-28 21:24:24 |
| Shyam | 2017-10-28 21:24:30 |
| Mohan | 2017-10-28 21:24:47 |
+-------------+---------------------+
3 rows in set (0.00 sec)結果を見ると、INSERT文では StudentName の値しか指定していませんが、RegDate カラムにはそれぞれ挿入した瞬間の日付と時刻が自動的に記録されていることがわかります。
この機能のメリット
- INSERT文で日時を意識せずに済み、SQLがシンプルになる
- レコードが作成された正確な日時が必ず残るため、履歴管理や監査に役立つ
- アプリケーション側で日時を生成する手間やミスを防げる
補足:更新日時も自動管理したい場合
さらに ON UPDATE CURRENT_TIMESTAMP を組み合わせると、レコードが更新されるたびにタイムスタンプを自動更新させることも可能です。
RegDate TIMESTAMP DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMPまた、MySQL 5.6.5以降では、DATETIME 型でも DEFAULT CURRENT_TIMESTAMP を使用できるようになりました。用途に応じて TIMESTAMP 型と DATETIME 型を使い分けるとよいでしょう。
このように DEFAULT CURRENT_TIMESTAMP を活用すれば、データ挿入時点の日時を確実に自動記録でき、作成日時のトラッキングが簡単に行えます。
-
MySQLで現在の日付と時刻をTIMESTAMPカラムに設定する方法
MySQLでは、TIMESTAMP 型のカラムに現在の日付と時刻を保存したい場面がよくあります。例えば、ユーザーのログイン日時を記録する場合などです。本記事では、テーブルの作成からデータの挿入、確認までの手順を解説します。 1. TIMESTAMP型のカラムを含むテーブルを作成する まず、TIMESTAMP 型のカラムを持つテーブルを作成しましょう。以下の例では、UserLoginTime カラムにデフォルト値として CURRENT_TIMESTAMP を設定しています。 mysql> create table DemoTable648( UserId int NOT NULL
-
【MySQL】レコードの存在確認と重複時の列の上書き更新を行う方法(INSERT ... ON DUPLICATE KEY UPDATE)
MySQLで「レコードが存在しない場合は挿入し、すでに存在する場合は指定した列の値を上書きしたい」というケースがあります。このような場合には、INSERT ... ON DUPLICATE KEY UPDATE 構文を使用します。この記事では、具体的なサンプルコードとともにその使い方を解説します。サンプルテーブルの作成まず、FirstName 列に UNIQUE キーを設定したテーブルを作成します。UNIQUE キーがあることで、重複データの挿入が検出されるようになります。mysql> create table DemoTable1891 ( FirstName varc