过去一小时我一直在尝试不同的Google搜索,但我找不到任何有关MYSQL时区表的详细说明。我看过他们,但这还不足以让我把它们弄清楚(至少还有)。
我不介意阅读本手册,但有人能指出我描述这些表结构的那本书吗?
然后我想生成可以采用时区名称并生成时区缩写的SQL。然后是从缩写和国家代码到时区名称的反向。我找到了一些建议的SQL来完成其中的一些,但我对使用那些没有理解他们访问的表的那些犹豫不决。
/*
Input: sourcedt : Input datetime string in context of source
sourcetzn : timezone used for sourcedt
basetzn: Default timezone used by server
displaytz: Timezone for displaying date
Output:
@displaydt : Date time in context of source
is_DST : set 1 when output is in daylight savings time
Abbreviation: Timezone abbreviation
Offset: GMT offset of displaytzn
*/
SET @sourcetzn = 'America/New_York';
SET @basetzn = 'America/Los_Angeles';
SET @displaytzn = 'America/Chicago';
SET @sourcedt = '2015-07-25 21:33:00';
SET @basedt = CONVERT_TZ(@sourcedt,@sourcetzn,@basetzn);
SET @displaydt = CONVERT_TZ(@basedt,@basetzn, @displaytzn);
SET @utime = unix_timestamp(@basedt);
SELECT
@displaydt,ztt.Abbreviation,ztt.Is_DST,ztt.`Offset`
FROM mysql.`time_zone_name` tzn
JOIN mysql.time_zone_transition_type ztt ON ztt.Time_zone_id=tzn.Time_zone_id
INNER JOIN mysql.time_zone_transition tzt
ON tzt.Time_zone_id = ztt.Time_zone_id
AND tzt.Transition_type_id = ztt.Transition_type_id
where tzn.Name = @displaytzn
and @utime > tzt.Transition_time
order by Transition_time desc
LIMIT 1;