hive 配置单元:将格式为yyyyMMddHmmss.SSSSSSS的字符串转换为时间戳类型

but5z9lq  于 2022-11-23  发布在  Hive
关注(0)|答案(1)|浏览(112)

我正在修改数据类型以将数据移动到配置单元。数据的格式如下:

20221002060113.5896430
20221002102706.1747960
20221002094410.7570130
20221002082244.3088750
20221002070653.5202430
20221002052930.1846300
20221002070419.3333240
20221002091636.2612740
20221002061255.2212480
20221002130224.1436890
20221002050019.3692290
20221002075419.9681030
20221002081900.3694800
20221002071155.1969230
20221002100025.2322450
20221002045419.1629670
20221002043305.5806050

它需要转换成时间戳格式,但我知道它不像一个函数那样工作。
下面是我写的代码:

SELECT 
cast(substring(test1, 1,4)||'-'||substring(test1, 5,2)||'-'||substring(test1, 7,2)||' '||substring(test1, 9,2)||':'||substring(test1, 11,2)||':'||substring(test1, 13,2)as timestamp) as tst1
FROM TEST.TESTTB

这样写,我可以把它转换成时间戳格式,但是有一些缺失的值,而且这段代码很脏。

taor4pac

taor4pac1#

我想你快到了。

SELECT 
cast(substring(test1, 1,4)||'-'||substring(test1, 5,2)||'-'||substring(test1, 7,2)||' '||substring(test1, 9,2)||':'||substring(test1, 11,2)||':'||substring(test1, 13,2) ||substr(test1, 15) as timestamp) as tst1
FROM TEST.TESTTB

请注意,我已经添加了最后一个子字符串。转换将yyyy-MM-dd hh:mm:ss.SSSS转换为时间戳。请验证它是否可以转换整毫秒。如果不能,您需要调整毫秒数。

相关问题