最後は日付・時刻データ型についてです。PostgreSQL、MySQLそれぞれがサポートしている代表的な日付・時刻データ型は次の通りです。
- PostgreSQL
- date、time、timestamp、interval
- MySQL
- date、time、timestamp、datetime、year
表5:PostgreSQLとMySQLの日付・時刻データ型
よく見かけるテーブル設計として、そのテーブル内のレコード単位の更新日時を記録するためのカラムを用意することがあると思います。このカラムのデータ型としては、日付・時刻データ型の1つであるtimestamp型を用いることが多いでしょう。timestamp型はPostgreSQL、MySQL共にサポートしていますが、若干機能が異なりますので具体的に例をあげて説明します。
図1の通りカラム「COL01」「COL02」「COL03」「COL04」を持つテーブル「TABLE01」を使用した例を考えてみます。

図1:TABLE01のサンプル
「COL01」「COL02」「COL03」のデータ型はchar(4)で「COL04」のデータ型はtimestamp型とします。この「TABLE01」テーブルに対してレコードを挿入し、その時の日付時刻を「COL04」に記録するためには、以下のようなINSERT文を使用します。
INSERT INTO TABLE01 (COL01,COL02,COL03) VALUES ('1000','2000','3000')
これは、「COL04」に対して明示的な値を設定しないことによって、RDBMSに自動でその時の日付時刻を設定してもらう方法です。PostgreSQLとMySQL共にこの方法を実行できます。ただしPostgreSQLの場合は、「COL04」にデフォルト制約として、現在の日付時刻値を意味する「current_timestamp」を定義しておく必要があります。デフォルト制約とは、レコードの挿入時に値が指定されなかった場合に、自動でRDBMSが記録する値を定義できる機能で、PostgreSQLやMySQLだけでなく他のRDBMSでもこの機能は提供されています。
|