【发布时间】:2016-01-17 23:57:15
【问题描述】:
如果我查询 RDBMS 以获取我收到的时间戳:2015-03-30 00:00:00
将其作为 bigint 列导出到 Hive 表后,我得到 1427673600000 (cast(ts as timestamp) gives 2015-03-30 02:00:00) 。即当前本地时区(夏令时)已应用于时间戳。
如果我想与数据库中的内容保持一致,如何将导出的时间戳存储在 Hive 中?我是否需要始终在 Hive 中将时间戳存储为 UTC 格式,所以在这种情况下,我需要从我得到的内容中减去 2 小时
然后我必须在查询期间应用当前时区(使用from_utc_timestamp)?
如何考虑夏令时(GMT+1 和 GMT+2)?
最佳做法是什么?
【问题讨论】:
-
过去的时间戳应始终存储为 UTC。例外情况是,如果您还需要也需要关联当地时间,则将当地时间存储在单独的字段中,或者在平台支持时使用
datetimeoffset。 (未来是完全不同的事情。)这是最佳实践,链接为重复。 -
感谢您的信息。您有任何与 Hive 相关的附加组件/最佳实践吗?
-
重新打开以添加 Hive 的详细信息。 (最初标记为Daylight saving time and time zone best practices的dup)
标签: database date hadoop timezone hive