[英]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.