查找15-29分钟之间的所有TIME字段,以及与时区相关的小时

时间:2017-02-13 05:03:42

标签: mysql mariadb

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。

1 个答案:

答案 0 :(得分:-1)

不要将它们存储在TIMESTAMP列中;将它们存储为DATETIME。这样,插入期间没有偏移,也没有选择。

如果您还需要UTC,可能需要两列,每种类型一个?