リレーショナルデータベースにはタイムゾーン情報を保持しているテーブルを持っていることが多い。主要なリレーショナルデータベースがどの名前でタイムゾーンの情報を保持しているかを確認する。
PostgreSQL
PostgreSQLのタイムゾーン情報は、システムカタログ pg_timezone_names に保持されている。システムカタログとは、RDBMSがシステムに必要な内部情報を格納して置く領域のことを指し、PostgreSQLでのシステムカタログは通常のテーブルとなっている。
pg_timezone_names
pg_timezone_names は次のように定義されている。
| カラム | 型 | 用途 |
|---|---|---|
| name | text | タイムゾーンの名前 |
| abbrev | text | |
| utc_offset | interval | オフセット値 |
| is_dst | boolean |
\d pg_timezone_names;
View "pg_catalog.pg_timezone_names"
Column | Type | Collation | Nullable | Default
------------+----------+-----------+----------+---------
name | text | | |
abbrev | text | | |
utc_offset | interval | | |
is_dst | boolean | | |次のような値が実際に設定されている。
\c postgres;
SELECT * FROM pg_timezone_names LIMIT 3;
name | abbrev | utc_offset | is_dst
-------------------+--------+------------+--------
Cuba | CST | -05:00:00 | f
posixrules | EST | -05:00:00 | f
Africa/Casablanca | +01 | 01:00:00 | f
(3 rows)MySQL
MySQLのタイムゾーン情報は、mysqlスキーマ内のいくつかのテーブルに保持されている1。
| スキーマ | テーブル | 用途 |
|---|---|---|
| mysql | time_zone | タイムゾーン ID、およびうるう秒を使用するかどうか。 |
| mysql | time_zone_leap_second | うるう秒が発生したとき。 |
| mysql | time_zone_name | タイムゾーン ID と名前のマッピング。 |
| mysql | time_zone_transition | タイムゾーンの説明1。 |
| mysql | time_zone_transition_type | タイムゾーンの説明2。 |
一つずつ詳しく確認していく。
time_zone
タイムゾーン ID、およびうるう秒を使用するかどうか。
| カラム | 型 | 用途 |
|---|---|---|
| Time_zone_id | int unsigned | |
| Use_leap_seconds | enum('Y','N') |
time_zone_leap_second
うるう秒が発生したとき。
| カラム | 型 | 用途 |
|---|---|---|
| Transition_time | bigint | |
| Correction | int |
time_zone_name
タイムゾーン ID と名前のマッピング。
| カラム | 型 | 用途 |
|---|---|---|
| Name | char(64) | |
| Time_zone_id | int unsigned |
time_zone_transition
タイムゾーンの説明1。
| カラム | 型 | 用途 |
|---|---|---|
| Time_zone_id | int unsigned | |
| Transition_time | bigint | |
| Transition_type_id | int unsigned |
time_zone_transition_type
タイムゾーンの説明2。
| カラム | 型 | 用途 |
|---|---|---|
| Time_zone_id | int unsigned | |
| Transition_type_id | int unsigned | |
| Offset | int | |
| Is_DST | tinyint unsigned | |
| Abbreviation | char(8) |