Hive 中的时间戳解析

Timestamp parsing in Hive

我正在尝试读取时间戳并根据我的要求在 Hive 中以不同的格式重建它。但是,我似乎无法获得正确的月份和日期。我怀疑时间戳格式不正确,但不确定哪里出错了。

查询

select from_unixtime(unix_timestamp("Sun Mar 28 19:51:10 GMT+05:30 2021", "EEE MMM dd HH:mm:ss z YYYY"), "HH:mm:ss dd-MM-YYYY-z")

输出

14:21:10 27-12-2021-UTC

阅读在 unix_timestamp 和 from_unixtime 的幕后使用的 SimpleDateFormat class 文档。

y - 是一年---这就是你需要的 Y - 是星期年 --- 这是你在模式中使用的

另见 https://errorprone.info/bugpattern/MisusedWeekYear 还有一些解释什么是星期年:https://docs.oracle.com/javase/7/docs/api/java/util/GregorianCalendar.html#week_year

周年简称为相关周数所属的年份。

固定:

select from_unixtime(unix_timestamp("Sun Mar 28 19:51:10 GMT+05:30 2021", "EEE MMM dd HH:mm:ss z yyyy"), "HH:mm:ss dd-MM-yyyy-z")

结果:

14:21:10 28-03-2021-UTC