繁体   English   中英

MySQL将DateTime(存储UTC_TIMESTAMP)转换为1970年的秒数

[英]MySQL convert DateTime (storing a UTC_TIMESTAMP) to number of seconds 1970

有很多类似的问题,但我相信这一个是独一无二的。 (对不起,如果不是)

我们的数据库有datetime字段名为“date_sampled”,我们用UTC_TIMESTAMP()存储

我们的目标是返回自1970年以来的秒数。我注意到UNIX_TIMESTAMP()如果提供,则没有参数返回当前的UNIX_TIMESTAMP(),如果传递了datetime(即2011-10-10),则返回以秒为单位的时间戳。

然而UTC_TIMESTAMP()不喜欢这个工作, 它只返回当前UTC时间戳。

那么如何将我的DateTime字段(持有UTC日期时间)转换为MySQL中1970年的秒数? 如果无法在MySQL中完成,那么PHP解决方案将起作用。

谢谢。

MySQL中有一个TIMESTAMPDIFF函数,你可以使用它

SELECT TIMESTAMPDIFF(SECOND,'1970-01-01 00:00:00', YourUTCDateFromSomewhere)

文档中的更多详细信息 - http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_timestampdiff

有趣的问题......我不知道如何用SQL做这个...但PHP的解决方案是使用strtotime()函数..

<?php
echo strtotime('2011-10-10');
?>

上面的示例返回值1318219200,它是自1970年代以来经过的秒数

你想让UTC_TIMESTAMP做什么来做UNIX_TIMESTAMP呢? 根据定义,Unix时间戳以UTC为单位。

我假设您遇到的问题是,即使您以UTC UNIX_TIMESTAMP存储日期时间, UNIX_TIMESTAMP也会为您提供时区偏移结果,因此您可以获得与您期望的相差几个小时的值。

UNIX_TIMESTAMP尊重MySQL的time_zone变量 ,因此如果您的所有日期都是UTC,则可以将会话的time_zone变量设置为UTC,这会导致UNIX_TIMESTAMP在将日期时间转换为时间戳时不进行时区转换。

SET time_zone = '+00:00'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM