MySQL:占用DST的DATE_SUB/DATE_ADD?

Bry*_*eld 9 mysql dateadd dst

这返回1(又名TRUE)

SELECT DATE_SUB(NOW(), INTERVAL 24*100 HOUR) = DATE_SUB(NOW(), INTERVAL 100 DAY);
Run Code Online (Sandbox Code Playgroud)

100天前,一天中的小时不会改变.但是由于夏令时(美国),100个二十四小时前的时间实际上比按天计算的时间提前一小时.如果上述陈述占DST,则会返回0FALSE.

对于给定的陈述或会话,有没有办法说明DST?我宁愿不使用,UNIX_TIMESTAMP因为它切断了2038年以后的任何东西.

Mor*_*rg. -2

当您可以确定 64 位整数时间戳将在至少 20 年前的所有地方实现时,切断 2038 年之后的任何内容怎么会成为一个真正的问题呢?

说真的,MySQL 中的日期时间/时间戳类型存在很多问题,您应该尽可能避免它们。

您是否存储了 2038 年之后的许多日期?

而且,为什么不尝试使用具有更高级类型支持的 PostgreSQL?