【问题标题】:Why MySql is returning time in AM instead of PM?为什么 MySql 在上午而不是下午返回时间?
【发布时间】:2016-09-24 12:26:18
【问题描述】:

当我运行下面的查询时,

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

它返回时间戳为

2016-09-24 05:16:53 AM

但在我的电脑上是下午 05: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 server 在我的电脑上,版本 5.5.28,系统时区由 mysql server 报告,操作系统:Windows 10

【问题讨论】:

  • mysql服务器在哪里?在你的电脑上?你用的是什么操作系统和mysql的版本?您的 PC 的时区是什么,mysql 报告的时区是什么?请使用详细信息编辑您的问题。
  • @sikander 试试 SELECT TIMEDIFF(CURRENT_TIMESTAMP, UTC_TIMESTAMP) 告诉我你得到了什么

标签: mysql datetime timezone datetime-format


【解决方案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)

【讨论】:

    猜你喜欢
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    相关资源
    最近更新 更多