在 Cassandra 中存储时间戳的时区信息

问题描述 投票:0回答:2

我知道 Cassandra 将时间戳存储为自纪元以来的秒(或微秒)。因此,如果我关心特定事件发生的时区,我是否需要将其存储在单独的列中?对于如何存储它有任何最佳实践或建议吗?与 GMT 的整数偏移量?

cassandra timestamp cql
2个回答
9
投票

我们每天在 Cassandra 集群中存储数百万个时间戳及其时区。

我们建议的做法是将时间戳存储为两个值:

  1. 将时间戳本身存储为时间戳类型或 bigint 并始终将其与 UTC 对齐(我们使用 .NET 日期时间,它从零年开始,而不是 UNIX 纪元,因此我们必须使用 bigint。)
  2. 将 UTC 偏移量存储为 bigint,以微秒为单位

这样,默认情况下,我们所有的时间戳都全面使用相同的时区。然而,每当我们需要在当地时间做某事时,我们只需获取 UTC 偏移列并从时间戳中减去它即可获得当地时间。


0
投票

我面临类似的情况,我想分配来自位于世界各地(不同时区)的物联网设备的测量值。之后,我的一些要求是,每次我们在用户界面中可视化数据时,我们都需要转换回原始的特定设备时区。所以,基本上,我假设下一个

  1. 我需要强制将 UTC 偏移量始终作为传入日期时间的一部分提供
  2. 我需要将该偏移量保存在不同的列中,以免丢失它,当数据需要由 UI 中的运算符可视化时,我可以使用它转换为特定的本地时间

我没有收到@JonathanNappee 的评论,如何获取时区?我的意思是, datetime 中传入的唯一信息是与 UTC 的偏差。例如,2011-02-03 04:05:00+0200。我知道,为了满足要求,我唯一能做的就是在存储时间戳时将 UTC 偏移量“+0200”保存为同一行的一部分。

© www.soinside.com 2019 - 2024. All rights reserved.