0

这些都正确返回当前的 UNIX 时间戳:

SELECT UNIX_TIMESTAMP(LOCALTIMESTAMP()); #MySql
echo time(); //PHP

但我将 UTC_TIMESTAMP 存储在我的数据库中(不是 LOCALTIMESTAMP)。

如何使用 MySQL 将 UTC 日期时间转换为 UNIX 时间戳?

4

1 回答 1

2

请注意,LOCALTIMESTAMP() 是 NOW() 的同义词。因此,您真正要问的是如何获取当前时间并将其转换为 GMT,然后转换为 unix 时间戳以存储在数据库中。所以这将起作用:

SELECT UNIX_TIMESTAMP(CONVERT_TZ(NOW(), @@global.time_zone, 'GMT'));

顺便说一句,使用数据库的时间和日期列总是比使用 unix 时间戳要好得多。它使查询和显示结果变得更加容易。

更新:你确定你得到了你认为的那样吗? UNIX_TIMESTAMP 返回自 UNIX 纪元以来基于 UTC 的秒数。它不返回MySQL DateTime 类型。如果您有一个实际的 UTC DateTime 实例,那么您可以将其直接放入数据库的 DateTime 列中,而不必使用 UNIX_TIMESTAMP 作为中介。在当地时间,你实际上有什么类型的?

于 2010-12-28T19:33:30.517 回答