无法使用mysql中的CONVERT_TZ函数将GMT时区转换为PDT

时间:2015-10-21 12:58:07

标签: php mysql datetime timezone

我无法使用mysql中的CONVERT_TZ函数将GMT时区转换为PDT,而我可以将GMT / UTC时区转换为MET / GMT时区。

MySQL Query :

SELECT CONVERT_TZ('2004-01-01 12:00:00','UTC','Asia/Jakarta') AS time;

+---------------------+
| time                |
+---------------------+
| 2004-01-01 19:00:00 |
+---------------------+

SELECT CONVERT_TZ('2015-10-21 12:50:00','GMT','PDT') AS time;

+------+
| time |
+------+
| NULL |
+------+

提前致谢。

2 个答案:

答案 0 :(得分:2)

我刚注意到有一个PST8PDT时区名称,是您要找的?

SELECT CONVERT_TZ('2015-10-21 12:50:00','GMT','PST8PDT') AS time;

答案 1 :(得分:1)

您不应使用三个字母的时区缩写。虽然有少数人受到支持,但总的来说有很多含糊之处。例如,CST有五种不同的解释。您可以查看the list on Wikipedia了解更多冲突示例。

此外,时区缩写通常仅指时区的部分。例如,太平洋时间在冬天使用PST,在夏天使用PDT。时区数据库中的某些条目尝试解释此问题(使用PDT规则指定PST时的白天时间),但其他条目是严格固定的偏移量且不切换。了解哪些是徒劳的。

您也不应该使用像PST8PDT这样的时区,因为这些时区主要用于向后兼容旧的POSIX标准。这种时区风格的问题在于他们没有考虑任何变化的历史。时区会随着时间的推移而改变其规则,例如美国在2007年更改其DST规则,或者俄罗斯在2014年更改其标准抵消时等。如果您使用POSIX格式,则您的系统只能考虑一组规则。

您应该只使用基于位置的IANA tz标识符的时区。太平洋时间为America/Los_Angeles。中心时间为America/Chicago。有关其他示例,请参阅the list on Wikipedia