0

目前,我插入数据库的代码如下:

mysql_query("INSERT INTO lookup_table (
    the_date
        )
VALUES(
        NOW()
)
";)

在一行中,这是:

mysql_query("INSERT INTO lookup_table (the_date) VALUES(NOW())";)

问题是,由于某种原因,我在这里拥有的 NOW() 正在将 12 小时制的时钟记录到数据库中。(下午 1:03 记录为 01:03:00,而不是 13:03:00。)

我可以做些什么来指定 NOW() 将其格式化为 24 小时制?

我已经阅读了很多关于格式化的内容。不幸的是,正如过去多次发生的那样,存在一些小的、几乎无法察觉的格式问题,可能会使事情变得不太正确。

我试图确保我不会进行长时间的反复试验,以确保我得到正确的格式。

我认为写有“ NOW()”的行应该替换为“ DATE_FORMAT(NOW(), %Y-%m-%d %T)”,但我正在寻找没有我领导证人的独立确认,并且有人说“是的,看起来足够好”。

现在,数据库中的条目如下所示:

2012-06-27 01:03:36

这将是完美的,如果不是时间应该是 13 而不是 01,就像这样:

2012-06-27 13:03:36

我知道“NOW()”正在工作,它只需要是 24 小时格式,默认情况下应该是这种格式。出于某种原因,这没有发生,我只想知道用什么特定的字母数字序列代替“NOW()”来记录为 24 小时格式。

4

4 回答 4

1

鉴于 的文档NOW(),我怀疑您的系统以某种方式配置得非常奇怪,或者您所处的时区目前距离 UTC 有 12 小时“外”。(或者您的服务器配置为仅使用 UTC,因此它给出了 UTC 时间,但您期望的是本地时间。)文档中没有迹象表明返回的格式NOW()受任何文化设置的影响。

我建议一般来说,UTC_TIMESTAMP()无论如何存储结果都会是一种更好的方法 - 但当然你仍然想确保你最终得到一个合理的格式。

早上看到什么,如果只用你看到一样的效果吗

SELECT NOW(), UTC_TIMESTAMP()

从交互式查询窗口?同样,您是否有任何其他服务器可以尝试相同的查询?您正在运行哪个版本的 MySQL?

于 2012-06-28T06:10:21.680 回答
1

NOW() 永远不应返回 12 小时制。可能是您的时区设置错误。尝试运行 select @@time_zone 并查看结果是什么(默认应为 SYSTEM)。您的系统时钟可能是 UTC。您可以根据此处的文档为 MySQL 设置时区:http: //dev.mysql.com/doc/refman//5.5/en/time-zone-support.html

于 2012-06-28T06:19:28.677 回答
0

将 NOW() 包装在DATE_FORMAT()函数中。

于 2012-06-28T05:48:29.817 回答
0

太好了,这就是发生的事情:

客户喜欢自己查看格式不正确的日期和时间。没关系。

不好的是,某个地方的某个人,在一个有点像帮助显示对他们来说都是错误的东西的代码中,设法成为有时记录它的一部分。区别在于“h”与“H”,这就是为什么它错误地将时间存储为 12 小时而不是 24 小时。

NOW() 默认情况下绝对是 24 小时记录,但我使用的意大利面条代码在某些情况下将其更改为 12 小时记录。

tl;dr---哎呀,我没有注意到“h”应该在某个地方是“H”,这是一个愚蠢的问题。我想请求删除我的愚蠢问题。

于 2012-06-28T06:34:16.020 回答