为什么MySql在AM而不是PM返回时间?

时间:2016-09-24 12:26:18

标签: mysql datetime timezone datetime-format

当我在查询下面运行时,

SELECT DATE_FORMAT(CURRENT_TIMESTAMP, '%Y-%m-%d %h:%i:%s %p')

它将时间戳记返回

2016-09-24 05:16:53 AM

但是我的电脑是05:16:53 PM。

我也运行以下查询以确保时区设置为 SYSTEM

SELECT @@global.time_zone;
SELECT @@session.time_zone;

可能是什么问题?我想要检索2个小时的记录,但由于这个问题,我被困住了。

以下是我的查询,

SELECT * FROM myTable WHERE NOW() < DATE_ADD(my_field_time,INTERVAL 2 HOUR)

由于 NOW 落后12小时,因此无法正常工作。

更新: Mysql服务器在我的电脑上,版本5.5.28,系统时区由mysql服务器报告,操作系统:Windows 10

1 个答案:

答案 0 :(得分:1)

试试这个

SET time_zone = yourtimezone //eg '+05:30'

之后尝试查询

SELECT DATE_FORMAT(CURRENT_TIMESTAMP, '%Y-%m-%d %h:%i:%s %p')

请注意SET time_zone = yourtimezone仅适用于当前会话。

要了解会话时区中当前日期时间与UTC中当前日期时间之间的差异,请使用以下查询

SELECT TIMEDIFF(CURRENT_TIMESTAMP, UTC_TIMESTAMP)

如果您的查询只需要特定的解决方法,因为NOW落后12小时,请尝试查询

SELECT * FROM myTable WHERE NOW() + INTERVAL 12 HOUR < DATE_ADD(my_field_time,INTERVAL 2 HOUR)