MySQL 5.6 リファレンスマニュアル  /  ...  /  mysql_tzinfo_to_sql — タイムゾーンテーブルのロード

4.4.6 mysql_tzinfo_to_sql — タイムゾーンテーブルのロード

mysql_tzinfo_to_sql プログラムは、mysql データベースに、タイムゾーンテーブルをロードします。zoneinfo データベース (タイムゾーンを記述するファイルのセット) があるシステムで使用します。このようなシステムには、Linux、FreeBSD、Solaris、OS X などがあります。これらのファイルの適切な場所の 1 つは /usr/share/zoneinfo ディレクトリです (Solaris では /usr/share/lib/zoneinfo)。zoneinfo データベースがないシステムの場合には、セクション10.6「MySQL Server でのタイムゾーンのサポート」で説明するダウンロード可能なパッケージを使用できます。

mysql_tzinfo_to_sql はいくつかの方法で呼び出せます。

shell> mysql_tzinfo_to_sql tz_dir
shell> mysql_tzinfo_to_sql tz_file tz_name
shell> mysql_tzinfo_to_sql --leap tz_file

最初の呼び出し構文は、zoneinfo ディレクトリのパス名を mysql_tzinfo_to_sql に渡し、出力を mysql プログラムに送信します。例:

shell> mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql

mysql_tzinfo_to_sql は、システムのタイムゾーンファイルを読み取り、そのファイルから SQL ステートメントを生成します。mysql はこれらのステートメントを処理して、タイムゾーンテーブルをロードします。

2 番目の構文は、mysql_tzinfo_to_sql がタイムゾーン名 tz_name に対応する単一のタイムゾーンファイル tz_file をロードします。

shell> mysql_tzinfo_to_sql tz_file tz_name | mysql -u root mysql

うるう秒を考慮する必要がある場合は、3 番目の構文を使用して mysql_tzinfo_to_sql を呼び出します。これはうるう秒の情報を初期化します。tz_file はタイムゾーンファイルの名前です。

shell> mysql_tzinfo_to_sql --leap tz_file | mysql -u root mysql

mysql_tzinfo_to_sql の実行後、以前にキャッシュしたすべてのタイムゾーンデータを使用し続けないように、サーバーを再起動することをお勧めします。


User Comments
  Posted by Wes Dean on August 14, 2010
I use a shared hosting service so the tables for mysql_tzinfo_to_sql are not available in my database. I went through a lot of trouble to get the structure for the tables, so I thought I would share.

CREATE TABLE `time_zone` (
`Time_zone_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`Use_leap_seconds` enum('Y','N') NOT NULL DEFAULT 'N',
PRIMARY KEY (`Time_zone_id`)
) ENGINE=MyISAM AUTO_INCREMENT=1676 DEFAULT CHARSET=utf8 COMMENT='Time zones';
CREATE TABLE `time_zone_leap_second` (
`Transition_time` bigint(20) NOT NULL,
`Correction` int(11) NOT NULL,
PRIMARY KEY (`Transition_time`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Leap seconds information for time zones';
CREATE TABLE `time_zone_name` (
`Name` char(64) NOT NULL,
`Time_zone_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`Name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Time zone names';
CREATE TABLE `time_zone_transition` (
`Time_zone_id` int(10) unsigned NOT NULL,
`Transition_time` bigint(20) NOT NULL,
`Transition_type_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`Time_zone_id`,`Transition_time`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Time zone transitions';
CREATE TABLE `time_zone_transition_type` (
`Time_zone_id` int(10) unsigned NOT NULL,
`Transition_type_id` int(10) unsigned NOT NULL,
`Offset` int(11) NOT NULL DEFAULT '0',
`Is_DST` tinyint(3) unsigned NOT NULL DEFAULT '0',
`Abbreviation` char(8) NOT NULL DEFAULT '',
PRIMARY KEY (`Time_zone_id`,`Transition_type_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Time zone transition types';
  Posted by Scott Carter on August 8, 2013
Hey Wes. Thanks for the table creation script. It worked great for me. Can you script out the data rows as well?
  Posted by Mark Stafford on October 17, 2013
The first two links go over why you might want to generate the data for yourself. Failing that, the third provides two options that include the records.

http://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html

http://dev.mysql.com/doc/refman/5.5/en/mysql-tzinfo-to-sql.html

http://dev.mysql.com/downloads/timezones.html

Sign Up Login You must be logged in to post a comment.