Dav*_*ord 10 hadoop timestamp hive
我有一个字符串'20141014123456789',它表示我需要转换为Hive(0.13.0)中的时间戳而不会丢失毫秒的时间戳(毫秒).
我试过这个,但unix_timestamp返回一个整数,所以我失去了毫秒:
from_unixtime(unix_timestamp('20141014123456789', 'yyyyMMddHHmmssSSS')) >> 2014-10-14 12:34:56
Run Code Online (Sandbox Code Playgroud)
投射字符串有效:
cast('2014-10-14 12:34:56.789' as timestamp) >> 2014-10-14 12:34:56.789
Run Code Online (Sandbox Code Playgroud)
但我的字符串不是那种形式.
我想我需要将我的字符串从'20141014123456789'重新格式化为'2014-10-14 12:34:56.789'.我的挑战是如何在没有子串的混乱连接的情况下做到这一点.
我找到了一种方法来避免使用以下代码的子串的混乱连接:
select cast(regexp_replace('20141014123456789',
'(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{3})',
'$1-$2-$3 $4:$5:$6.$7') as timestamp)
Run Code Online (Sandbox Code Playgroud)