MySQLでのdatetimeとtimestampの使い方

MYSQLチュートリアル

MySQLで日時を扱う際、datetime型とtimestamp型があります。どちらを使うべきかは、用途に応じて選択する必要があります。以下に、それぞれの特徴と使い方を説明します。

datetime型

datetime型は、日時を「YYYY-MM-DD HH:MM:SS」の形式で保存します。以下はdatetime型の特徴です:

  • 範囲は1000-01-01 00:00:00から9999-12-31 23:59:59まで。
  • タイムゾーンの影響を受けない。
  • 主にイベントの日時を記録する場合に使用されます。

例:

CREATE TABLE events (
    id INT AUTO_INCREMENT PRIMARY KEY,
    event_name VARCHAR(100),
    event_time DATETIME
);

INSERT INTO events (event_name, event_time) VALUES ('Meeting', '2024-06-28 10:00:00');

SELECT * FROM events;

timestamp型

timestamp型は、UNIXタイムスタンプとして日時を保存します。以下はtimestamp型の特徴です:

  • 範囲は1970-01-01 00:00:01 UTCから2038-01-19 03:14:07 UTCまで。
  • タイムゾーンの影響を受ける。
  • 主にレコードの作成・更新日時を自動的に記録する場合に使用されます。

例:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

INSERT INTO users (username) VALUES ('Alice');

SELECT * FROM users;

datetime型とtimestamp型の選択基準

以下の基準に基づいてdatetime型とtimestamp型を選択します:

  • 特定のイベント日時を記録する場合:datetime型を使用。
  • レコードの作成・更新日時を自動で記録する場合:timestamp型を使用。
  • タイムゾーンに依存しない日時を扱いたい場合:datetime型を使用。
  • タイムゾーンに依存する日時を扱いたい場合:timestamp型を使用。

最新情報

MySQLの最新バージョンでは、両方のデータ型での操作がさらに簡単になっています。例えば、DATETIME型での自動初期化や更新がサポートされています。

CREATE TABLE logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    log_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

INSERT INTO logs VALUES (DEFAULT);

SELECT * FROM logs;

このようにして、datetime型でも自動更新を実現できます。

購読
通知
0 Comments
Inline Feedbacks
View all comments