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

MySQLでカラムのデフォルト値にシステムの現在日時(CURRENT_TIMESTAMP)を設定する方法

MySQLでデフォルト日時としてシステム日時を使うには?

MySQLでは、CURRENT_TIMESTAMP を使うことで、カラムのデフォルト値としてシステムの現在日時を設定できます。レコード挿入時に明示的に日時を指定しなくても、自動的にその瞬間の日時が記録されるため、作成日時や締切日の初期値などに非常に便利です。

ここでは、実際にテーブルを作成し、後から ALTER TABLE でデフォルト日時を持つカラムを追加する手順を解説します。

1. サンプルテーブルを作成する

まず、以下のようにテーブルを作成します。

mysql> create table DemoTable
(
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ClientFirstName varchar(20),
    ClientLastName varchar(20),
    ClientAge int
);
Query OK, 0 rows affected (0.66 sec)

顧客の名前と年齢を管理するシンプルなテーブルです。Id カラムは自動採番(AUTO_INCREMENT)の主キーとして定義しています。

2. CURRENT_TIMESTAMPをデフォルト値とするカラムを追加する

次に、ALTER TABLE を使って、デフォルト値に CURRENT_TIMESTAMP を持つTIMESTAMP型のカラムを追加します。

mysql> alter table DemoTable add column ClientProjectDeadline timestamp default current_timestamp;
Query OK, 0 rows affected (0.46 sec)
Records: 0 Duplicates: 0 Warnings: 0

これにより、新しい行を挿入する際に ClientProjectDeadline の値を省略すると、その時点のシステム日時が自動的に格納されます。

3. テーブル構造を確認する

DESC コマンドでテーブル構造を確認してみましょう。

mysql> desc DemoTable;

実行結果は以下の通りです。

+-----------------------+-------------+------+-----+-------------------+----------------+
| Field                 | Type        | Null | Key | Default           | Extra          |
+-----------------------+-------------+------+-----+-------------------+----------------+
| Id                    | int(11)     | NO   | PRI | NULL              | auto_increment |
| ClientFirstName       | varchar(20) | YES  |     | NULL              |                |
| ClientLastName        | varchar(20) | YES  |     | NULL              |                |
| ClientAge             | int(11)     | YES  |     | NULL              |                |
| ClientProjectDeadline | timestamp   | YES  |     | CURRENT_TIMESTAMP |                |
+-----------------------+-------------+------+-----+-------------------+----------------+
5 rows in set (0.22 sec)

ClientProjectDeadline カラムの Default 列に「CURRENT_TIMESTAMP」と表示されており、正しくデフォルト日時が設定されていることがわかります。

補足:DATETIME型でもデフォルト値を指定できる

TIMESTAMP型だけでなく、MySQL 5.6.5以降では DATETIME 型にも DEFAULT CURRENT_TIMESTAMP を指定できます。さらに、ON UPDATE CURRENT_TIMESTAMP を組み合わせれば、行が更新されるたびにタイムスタンプを自動更新することも可能です。

alter table DemoTable 
add column UpdatedAt datetime default current_timestamp on update current_timestamp;

用途に応じてTIMESTAMP型とDATETIME型を使い分けることで、より柔軟な日時管理が実現できます。

  1. MySQLでテーブルを作成し、現在の日付をデフォルト値として設定する方法

    MySQLでは、テーブル作成時にDEFAULT制約を追加することで、カラムにデフォルト値を設定できます。日付型のカラムに対して現在の日付(CURRENT_DATE)をデフォルト値として指定すれば、レコード挿入時に明示的に値を渡さなくても自動的に当日の日付が登録されます。基本構文テーブルを作成し、DEFAULT制約を使ってデフォルト値を設定する際の基本的な構文は以下の通りです。CREATE TABLE yourTableName ( yourColumnName1 dataType not null , yourColumnName2 dataType default anyValue, . .

  2. デュアルブートPCでデフォルトのOSを設定する方法

    デュアルブートPCは、個人用途からビジネス用途まで幅広く活用されています。近年では、Windows 8.1とWindows 10の組み合わせを採用し、システム環境に応じて作業を切り替えているユーザーも少なくありません。しかし、2つのOSを搭載していても、実際に使用するのはどちらか一方であるケースが大半です。 デュアルブート環境の最大のメリットは、もう一方のOSのために追加のパソコンを用意するコストを抑えられる点にあります。一方で、多くのユーザーが悩まされる問題もあります。それは、よく使うOSを起動のたびに手動で選択しなければならないという点です。 例えば、デュアルブートPCにWindows 8