我想将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 ??
有什么想法吗?任何解决方法?
答案 0 :(得分:2)
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日期格式配合使用。