gpt4 book ai didi

MySQL永远以本地时间存储日期时间

转载 作者:行者123 更新时间:2023-11-29 11:24:36 24 4
gpt4 key购买 nike

我将照片时间戳存储在 MySQL 数据库中。目前,我的专栏设置为:

CREATE TABLE `photos` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`camname` varchar(45) DEFAULT NULL,
`date` date DEFAULT NULL,
`time` time DEFAULT NULL,
PRIMARY KEY (`ID`),
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

日期和时间表示拍摄照片的本地时间,由图像上打印的时间戳证明。因此,无论我在哪个时区检索或操作该数据,上午 10:45 总是并且应该始终是上午 10:45。

这对于分析至关重要 - 我们正在查看一天中事件发生的时间。以及过去了多少天等。稍后知道它发生的时间与本地时间是无关紧要的,也是无用的。

那么,在 MySQL 数据库中存储日期时间数据以使其始终显示最初记录的时间的最佳方法是什么?

<小时/>

相关:Should I use field 'datetime' or 'timestamp'?

我认为答案是:使用 DATETIME,您输入的就是您得到的。 2015-01-23 12:45:34 将始终为 2015-01-23 12:45:34,而 TIMESTAMP 将在本地客户端上以不同方式显示,而 DATETIME 不会。

但是,根据一些评论的建议,包含时区似乎是个好主意,这样很久以后有人就可以知道 DATETIME 指的是哪个时区。 (如果他们应该关心的话)。

最佳答案

由于服务器会将所有时间戳转换为服务器时间,而您需要本地时间,因此似乎有必要将时区存储在单独的列中。

我建议将时间存储为 UTC 格式,并将时区存储为整数 +/- UTC(以分钟为单位)。虽然这需要额外的处理,但它允许您需要以相当一致的方式存储数据。

请注意,您不应将时区存储为 VARCHAR(32),例如亚洲/利雅得。这是因为这样做不会考虑夏令时,因此您的时间可能会延迟一个小时。

关于MySQL永远以本地时间存储日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38449875/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com