将TIME
值保存到MySQL数据库时,我们的服务器会自动将这些日期转换为UTC时间格式,因此我们将用户的时区偏移量存储在数据库中。考虑到我们有一个由三个字段组成的简单数据库,我们如何在适当的小时内获得分配的分钟范围内的时间。
id | offset | alertTime
---|--------|----------
1 | 360 | 4:22:38
2 | 420 | 3:28:41
在此表中,用户1具有6小时偏移(CST),用户2具有5小时偏移和7小时偏移(MDT),我需要找到这些用户(和任何其他用户)在时区计算后的同一小时内。
转换到这些用户的时间几乎相同,两个用户都有一个警报,计划在晚上10点22分,晚上10点28分钟,但由于UTC转换,数据库输入了不同的时间。
假设我想让所有在晚上10点之间设置警报的用户,在美国中部时间10:16到10:29之间,无论他们的时区如何。
只是为了澄清,如果用户的时区转换为美国中部时间10:16 - 10:29,则应该返回在自己的时区设置alertTime的用户。因此,9:16-9:29 MDT也将在这些结果中返回。
希望这不会太混乱。
-
如果重要的话,我正在通过NodeJS使用MariaDB。
答案 0 :(得分:-1)
不要将它们存储在TIMESTAMP
列中;将它们存储为DATETIME
。这样,插入期间没有偏移,也没有选择。
如果您还需要UTC,可能需要两列,每种类型一个?