在MySQL中获取当前UTC时间的unix时间戳的最佳方法

lit*_*edi 38 mysql mysql-workbench

我一直在尝试在mySQL中使用以下内容为当前UTC时间创建一个unix标记

UNIX_TIMESTAMP(UTC_TIMESTAMP())
Run Code Online (Sandbox Code Playgroud)

当我执行查询并获得结果时,似乎mySQL正在进行两次UTC会话.

Eg. local time 9:07PM
Run Code Online (Sandbox Code Playgroud)

上面的查询返回: 1374390482,这是第二天07:08:02 GMT,这是正确的,

但是,UNIX_TIMESTAMP(LOCALTIMESTAMP())退货:

1374372551 02:09:11 GMT
Run Code Online (Sandbox Code Playgroud)

这是正确的UTC unix时间戳.

所以UNIX_TIMESTAMP自动将日期对象的时区转换为UTC(无论它是否已经是UTC?)

是否有更好的方法或单个命令只是为了在mySQL中获得UTC unix时间戳?

Ald*_*den 72

试试吧:

UNIX_TIMESTAMP()
Run Code Online (Sandbox Code Playgroud)

请看这里:http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_unix-timestamp

  • @JoSmo实际上Unix时间戳没有固有的时区**.这是一个时间符号,专门设计为不受时区,夏令时和时钟分割等概念的约束.它只是一个数字:从那个时刻开始的秒数(或毫秒),可以称为"1970-01-01 00:00:00"UTC(这是Unix时间"0").但Unix时间本身不是UTC,它超越了时区本身的概念.无论你在哪个时区,当前的Unix时间对你,不同时区的人以及整个宇宙都是完全相同的. (4认同)
  • 据我了解,无论服务器的时区如何,UNIX_TIMESTAMP()始终都是相同的.这就是我以前用过的东西.但在上面的示例中,它与参数UNIX_TIMESTAMP(date)一起使用,在这种情况下,服务器时区将用于解释参数日期. (2认同)