chr*_*s01 6 mysql datetime mariadb
我尝试将日期时间(即带有时钟时间的日历日期)存储在表中。
据我所知,DATETIME 类型没有时区。
TIME 类型仅限于 1970 年至 2038 年。
我生活在一个夏季(CEST)和冬季(CET)时区不同的国家。因此,当我们从 CEST 切换到 CET 时,有一个双小时 3。
当我无法获得包含时区的日期时间并且需要区分这个小时 3 时,我别无选择,只能手动处理它。
例如,为其添加另一列或将任何 DATETIME 转换为 UTC。
这是唯一的方法还是我错过了什么?
这取决于你真正在做什么。
MySQL/MariaDB 只有 2 个:
DATETIME
——把它想象成一张时钟的图片。这就是您在所在时区看到的内容。TIMESTAMP
——把它想象成宇宙中的这个实例。或者认为是通过从时区转换为 UTC 来实现的,并存储 UTC 值。(当你SELECT
这样做时,就会转换回来。)如果其中任何一个对您有用,那就使用它。如果没有,我可能建议存储TIMESTAMP
加上时区偏移量(以分钟为单位),但这仅适用于历史数据。所有的偏移量(目前)都是(我认为)以分钟为单位的(整小时、30 分钟或 45 分钟)。(荷兰曾经有过精确到秒的偏移量。)大多数国家/地区与 UTC 的时间相差几个小时。印度是最大的有半小时偏移的国家(因为它是整个国家的一个时区),但还有许多其他时区有半小时偏移(澳大利亚/阿德莱德和澳大利亚/达尔文)甚至 45 分钟偏移(太平洋/查塔姆),有些有夏令时(澳大利亚/阿德莱德),而另一些则没有(澳大利亚/达尔文,最后一次 DST 更改是在 1944 年)。
归档时间: |
|
查看次数: |
8459 次 |
最近记录: |