在没有导入 zoneinfo 的情况下,似乎没有办法让 MySQL 从时间戳返回格式化时间。
如果我使用
SET time_zone = '-4:00'
我为 11 月 1 日下午 6:00 创建了一个时间戳,当夏令时过去时,时区更改为 -5:00,该事件将不再在正确的时间显示。
是否可以从应用程序加载时区数据?或者我是否需要将我的所有时间戳作为 UNIX 时间戳并在应用程序中进行转换?如果是这样,那将阻止我正确排序没有时间为 12:00 AM 的日期,而不管 MySQL 中的时区如何。
为了澄清最后一点,我有一个日期列,当时间戳为空时,它会转换为时间戳。它看起来像:
select my_date, my_timestamp
from my_table
where if(my_timestamp, my_timestamp, timestamp(my_date))
为了澄清评论:这被存储为时间戳并转换为本地时间。可以返回跨越 DST 更改的多个事件。我最终将所有时间都转换为 PHP,这很不方便,因为它需要 PHP 5.1 或更高版本。