我应该从time_zone_transition表中使用哪个缩写?

时间:2011-11-09 22:59:24

标签: mysql timezone

我想显示给定日期的适当时区缩写,而不仅仅是Olsen国家/城市名称(例如,显示'PST'而不是'US / Pacific')。

目前尚不清楚如何查询用于给定日期的正确缩写。 time_zone_name表中类似记录之间的唯一区别是time_zone_transition中的'transition_type_id列。

以下是示例查询。我想我需要插入一个真实的日期,以便知道transition_type_id与日期匹配,然后能够根据该id进行过滤以获得缩写。

SELECT
  tz.name
  ,tpe.abbreviation
  ,tpe.offset/3600
  ,tpe.* 
FROM mysql.time_zone_transition_type tpe, mysql.time_zone_name tz  
WHERE tz.time_zone_id = tpe.time_zone_id 
  AND tz.name = 'US/Pacific' ;

1 个答案:

答案 0 :(得分:0)

我认为这是您正在寻找的查询。最终,您需要将其与应用程序表连接,并选择适当的time_zone_id以及替换此查询中的硬编码日期时间。

SELECT * FROM mysql.time_zone_transition_type ztt
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 tzt.Time_Zone_id = 163
and UNIX_TIMESTAMP('2014-01-23 16:00') >= Transition_time
order by Transition_time desc
LIMIT 1;