top
Loading...
5.10.8.MySQL服務器時區支持
5.10.8. MySQL服務器時區支持

 MySQL服務器有幾個時區設置:

·         系統時區。服務器啟動時便試圖確定主機的時區,用它來設置system_time_zone系統變量。

·         服務器當前的時區。全局系統變量time_zone表示服務器當前使用的時區。初使值為'SYSTEM',說明服務器時區與系統時區相同。可以用--default-time-zone=timez選項顯式指定初使值。如果你有SUPER 權限,可以用下面的語句在運行時設置全局變量值:

·                mysql> SET GLOBAL time_zone = timezone;

·         每個連接的時區。每個客戶端連接有自己的時區設置,用會話time_zone變量給出。其初使值與全局變量time_zone相同,但可以用下面的語句重設:

·                mysql> SET time_zone = timezone;

可以用下面的方法查詢當前的全局變量值和每個連接的時區:

mysql> SELECT @@global.time_zone, @@session.time_zone;

timezone值為字符串,表示UTC的偏移量,例如'+10:00''-6:00'。如果已經創建并裝入mysql數據庫中的時區相關表,你還可以使用命名的時區,例如'Europe/Helsinki''US/Eastern''MET'。值'SYSTEM'說明該時區應與系統時區相同。時區名對大小寫不敏感。

MySQL安裝程序在mysql數據庫中創建時區表,但不裝載。你必須手動裝載。(如果你正從以前的版本升級到MySQL 4.1.3或更新版本,你應通過升級mysql數據庫來創建表。參見2.10.2節,“升級授權表”中的說明)

如果你的系統有自己的時區信息數據庫(描述時區的一系列文件),應使用mysql_tzinfo_to_sql程序來填充時區表。示例系統如LinuxFreeBSDSun SolarisMac OS X。這些文件的可能位置為/usr/share/zoneinfo目錄。如果你的系統沒有時區信息數據庫,可以使用本節后面描述的下載的軟件包。

mysql_tzinfo_to_sql程序用來裝載時區表。在命令行中,將時區信息目錄路徑名傳遞到mysql_tzinfo_to_sql并輸出發送到mysql程序。例如:

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

mysql_tzinfo_to_sql讀取系統時區文件并生成SQL語句。mysql處理這些語句并裝載時區表。

mysql_tzinfo_to_sql還可以用來裝載單個時區文件,并生成閏秒信息。

要想裝載對應時區tz_name的單個時區文件tz_file,應這樣調用mysql_tzinfo_to_sql

shell> mysql_tzinfo_to_sql tz_file tz_name | mysql -u root mysql

如果你的時區需要計算閏秒,按下面方法初使化閏秒信息,其中tz_file是時區文件名:

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

如果你的系統沒有時區信息數據庫 (例如,WindowsHP-UX),你可以從http://dev.mysql.com/downloads/timezones.html下載預構建時區表軟件包。該軟件包包含MyISAM時區表所用的.frm.MYD.MYI文件。這些表應屬于mysql數據庫,因此應將這些文件放到MySQL服務器數據目錄的mysql子目錄。操作時應關閉服務器。

警告!如果你的系統有時區信息數據庫,請不要使用下載的軟件包。而應使用mysql_tzinfo_to_sql實用工具!否則,MySQL和系統上其它應用程序處理日期時間的方法會有所不同。

關于在復制時時區設置相關請查閱6.7節,“復制特性和已知問題”。

作者:mysql.com
來源:http://dev.mysql.com/doc/refman/5.1/zh/database-administration.html
北斗有巢氏 有巢氏北斗