SQL:如何使用UNIX_TIMESTAMP()将未来日期转换为时间戳?

时间:2016-09-02 08:01:59

标签: sql datetime timestamp future unix-timestamp

我想将DATETIME从列转换为UNIX TIMESTAMP。但问题是这些日期是在遥远的未来,例如2066-09-01 ...你可以尝试这些简单的查询:

SELECT UNIX_TIMESTAMP( '2016-09-03 09:00:00' )返回1472886000 - > GOOD

SELECT UNIX_TIMESTAMP( '2036-09-03 09:00:00' )返回2104038000 - > GOOD

SELECT UNIX_TIMESTAMP( '2066-09-03 09:00:00' )返回0 - >坏! WHY ??

有什么想法吗?任何解决方法?

2 个答案:

答案 0 :(得分:2)

来自Unixtimestamp.com

  

2038年1月19日会发生什么?

     

在此日期,由于32位溢出,Unix时间戳将停止工作。在此之前,数以百万计的应用程序需要采用新的时间戳约定或迁移到64位系统,这将会花费更多的时间来购买时间戳。

答案 1 :(得分:0)

听起来你的rdbms正在遭遇Y2038问题:https://en.m.wikipedia.org/wiki/Year_2038_problem

这是MySQL吗?他们有一个错误:https://dev.mysql.com/worklog/task/?id=1872

如果可能,建议处理此外部SQL。 PHP的strtotime()和其他语言中的类似函数可以与MySQL的ISO日期格式配合使用。