【发布时间】:2022-01-14 00:54:57
【问题描述】:
如果用户希望根据当地时区的一天中的一个小时触发通知或某些活动。您可以将每个用户首选的通知时间存储在数据库中,并且只需每小时轮询表以了解谁想要通知。但这不会考虑夏令时。这通常是如何解决的?
假设用户在美国东部标准时间上午 9 点请求:
-
如果您将美国东部标准时间上午 9 点转换为 GMT,并将 GMT 时间存储在数据库中。这不起作用,因为 GMT 转换仅在夏令时之前有效。
-
如果您将 9am EST 直接存储在表中,那么您必须查询表中的每一行,包括它们的时区,并计算每一行中的当前时间。
选项 2 有效,但仅适用于小型数据库。最好的方法是什么?
【问题讨论】:
-
这篇文章似乎包含了您可能想了解的有关该主题的所有内容 -stackoverflow.com/questions/2532729/…
-
您使用的是哪个 dbms? (对时区等的不同内置支持)
-
@jarlh 我最初想排除后端,这样我就可以使问题变得通用。但是您的权利有一些相关的数据库特定功能。我们正在使用 cql/cassandra。
-
@procopypaster 感谢您的回复,但该帖子正在讨论如何存储时间。我在问一个微妙不同的问题。如何根据用户首选的通知时间“存储”任务/通知。存储时间+时区是一种选择,但在该表上“选择小时=9”需要全表扫描。
标签: sql time localization cql