2016-09-24 72 views
0

当我运行下面的查询,为什么MySql在AM而不是PM中返回时间?

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

其返回时间戳作为

2016-09-24 05:16:53 AM 

,但它是下午5时16分53秒在我的电脑。

我在下面的查询运行以及确保时区设置为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服务器,OS报道:10的Windows

+0

mysql服务器在哪里?在你的电脑上?你使用的是什么操作系统和版本的MySQL?什么是你的电脑的时区以及由mysql报告的时区是什么?请编辑你的问题的细节。 –

+0

@sikander试试SELECT TIMEDIFF(CURRENT_TIMESTAMP,UTC_TIMESTAMP)并告诉我你得到的是什么 –

回答

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) 

如果您只需要具体的解决方法为您的查询和现在一样为12小时的背后,则尝试查询

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