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

SQL: How to convert future date to timestamp with UNIX_TIMESTAMP()?

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

SELECT UNIX_TIMESTAMP( '2016-09-03 09:00:00' ) returns 1472886000 -> 好

SELECT UNIX_TIMESTAMP( '2036-09-03 09:00:00' ) returns 2104038000 -> 好

SELECT UNIX_TIMESTAMP( '2066-09-03 09:00:00' ) returns 0 -> 不好!为什么??

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

来自Unixtimestamp.com

What happens on January 19, 2038?

On this date the Unix Time Stamp will cease to work due to a 32-bit overflow. Before this moment millions of applications will need to either adopt a new convention for time stamps or be migrated to 64-bit systems which will buy the time stamp a "bit" more time.

听起来您的 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 日期格式配合使用。