Javascript Hive 中的日期转换
Javascript Date conversion in Hive
我在 MMMM Do YYYY, HH:mm:ss.SSS
中有一个字符串数据类型的日期列
(December 16th 2019, 21:30:22.000
) 格式。
我正在尝试将其转换为配置单元中的时间戳数据类型,但无法实现,因为此格式在 unixtime 中不可用。
有什么方法可以在 hive 中转换它吗?
此方法将保持毫秒精度。首先使用正则表达式仅提取与 SimpleDateFormat 模式兼容的部分,然后转换为日期时间,与毫秒连接(unix_timestamp 转换后丢失的毫秒数)并转换为时间戳:
select timestamp(concat(from_unixtime(unix_timestamp(dt,'MMM dd yyyy HH:mm:ss.SSS')),'.',split(dt,'\.')[1]))
from
(select regexp_replace('December 16th 2019, 21:30:22.001','([A-Za-z]+ \d{1,2})[a-z]{0,2} (\d{4}), (\d{2}:\d{2}:\d{2}\.\d+)',' ') as dt --returns December 16 2019 21:30:22.001
) s;
OK
2019-12-16 21:30:22.001
Time taken: 0.09 seconds, Fetched: 1 row(s)
试试这个
SELECT from_unixtime(unix_timestamp) 作为 new_timestamp 来自数据 ...
将unix时间戳转换成YYYY-MM-DD格式HH:MM:SS,然后可以使用以下函数获取年月日:
SELECT年(new_timestamp)为年,月(new_timestamp)为月,日(new_timestamp)为日
我在 MMMM Do YYYY, HH:mm:ss.SSS
(December 16th 2019, 21:30:22.000
) 格式。
我正在尝试将其转换为配置单元中的时间戳数据类型,但无法实现,因为此格式在 unixtime 中不可用。
有什么方法可以在 hive 中转换它吗?
此方法将保持毫秒精度。首先使用正则表达式仅提取与 SimpleDateFormat 模式兼容的部分,然后转换为日期时间,与毫秒连接(unix_timestamp 转换后丢失的毫秒数)并转换为时间戳:
select timestamp(concat(from_unixtime(unix_timestamp(dt,'MMM dd yyyy HH:mm:ss.SSS')),'.',split(dt,'\.')[1]))
from
(select regexp_replace('December 16th 2019, 21:30:22.001','([A-Za-z]+ \d{1,2})[a-z]{0,2} (\d{4}), (\d{2}:\d{2}:\d{2}\.\d+)',' ') as dt --returns December 16 2019 21:30:22.001
) s;
OK
2019-12-16 21:30:22.001
Time taken: 0.09 seconds, Fetched: 1 row(s)
试试这个
SELECT from_unixtime(unix_timestamp) 作为 new_timestamp 来自数据 ...
将unix时间戳转换成YYYY-MM-DD格式HH:MM:SS,然后可以使用以下函数获取年月日:
SELECT年(new_timestamp)为年,月(new_timestamp)为月,日(new_timestamp)为日