代码之家  ›  专栏  ›  技术社区  ›  David Parks

MySQL:如何选择所有时区的UTC偏移量和DST?

  •  1
  • David Parks  · 技术社区  · 14 年前

    我想要mysql时区表中所有时区的列表,需要选择:

    1) 它们当前与格林尼治时间的偏移量

    原因: 我需要构建一个web表单,并将用户的时区信息(我可以从javascript生成)匹配到mysql数据库中存储的正确时区。我可以从javascript函数中找到UTC偏移量并获取DST标志。

    1 回复  |  直到 14 年前
        1
  •  1
  •   Bot    14 年前

    尝试此查询。偏移时间是(偏移/60/60)

    SELECT tzname.`Time_zone_id`,(`Offset`/60/60) AS `offsettime`,`Is_DST`,`Name`,`Transition_type_id`,`Abbreviation`
    FROM `time_zone_transition_type` AS `transition`, `time_zone_name` AS `tzname`
    WHERE transition.`Time_zone_id`=tzname.`Time_zone_id`
    ORDER BY transition.`Offset` ASC;
    

    结果是

    501 -12.00000000    0   0   PHOT    Pacific/Enderbury
    369 -12.00000000    0   0   GMT+12  Etc/GMT+12
    513 -12.00000000    0   1   KWAT    Pacific/Kwajalein
    483 -12.00000000    0   1   KWAT    Kwajalein
    518 -11.50000000    0   1   NUT Pacific/Niue
    496 -11.50000000    0   1   SAMT    Pacific/Apia
    528 -11.50000000    0   1   SAMT    Pacific/Samoa
    555 -11.50000000    0   1   SAMT    US/Samoa
    521 -11.50000000    0   1   SAMT    Pacific/Pago_Pago
    496 -11.44888889    0   0   LMT Pacific/Apia
    528 -11.38000000    0   0   LMT Pacific/Samoa
    555 -11.38000000    0   0   LMT US/Samoa
    521 -11.38000000    0   0   LMT Pacific/Pago_Pago
    518 -11.33333333    0   0   NUT Pacific/Niue
    544 -11.00000000    0   3   BST US/Aleutian
    163 -11.00000000    0   3   BST America/Nome
    518 -11.00000000    0   2   NUT Pacific/Niue
    496 -11.00000000    0   2   WST Pacific/Apia
    544 -11.00000000    0   0   NST US/Aleutian
    163 -11.00000000    0   0   NST America/Nome
    528 -11.00000000    0   4   SST Pacific/Samoa
    528 -11.00000000    0   3   BST Pacific/Samoa