您正在使用包含“displaytime”列的 MySQL 查询以 UTC 格式存储时间戳。但是,您需要显示本地时区的时间戳。 CONVERT_TZ() 函数未按预期工作。
要使用 CONVERT_TZ() 函数将 UTC 时间戳转换为本地时区,您必须指定两者的时区缩写UTC 和本地时区。正确的语法如下:
SELECT CONVERT_TZ(displaytime, 'UTC', 'LOCAL')
示例查询
WHERE displaytime >= '2012-12-01 00:00:00' AND displaytime <= '2013-02-22 23:59:59' AND ct.organizationId IN ( SELECT t.organizationId FROM organization_ AS t JOIN organization_ AS p ON t.treePath LIKE CONCAT(p.treePath, '%') WHERE p.organizationId = 10707 )
修改后的查询:
WHERE CONVERT_TZ(displaytime, 'UTC', 'LOCAL') >= '2012-12-01 00:00:00' AND CONVERT_TZ(displaytime, 'UTC', 'LOCAL') <= '2013-02-22 23:59:59' AND ct.organizationId IN ( SELECT t.organizationId FROM organization_ AS t JOIN organization_ AS p ON t.treePath LIKE CONCAT(p.treePath, '%') WHERE p.organizationId = 10707 )
如果 CONVERT_TZ() 不起作用,可能是由于时区表丢失或为空。您可以使用 mysql_tzinfo_to_sql 程序初始化时区表。
以上是如何在 MySQL 选择查询中将 UTC 日期转换为本地时区?的详细内容。更多信息请关注PHP中文网其他相关文章!