从字符串到时间戳的转换不起作用

xn1cxnb4  于 2021-06-27  发布在  Hive
关注(0)|答案(1)|浏览(365)

下表中的数据如下。列jobdate数据类型为string。
工作日期
1536945012211.kc公司
1536945014231.kc元
1536945312809.kc
我想把它转换成时间戳的格式 2018-12-205 06:15:10.505 我尝试了以下查询,但返回null。

select jobdate,from_unixtime(unix_timestamp(substr(jobdate,1,14),'YYYY-MM-DD HH:mm:ss.SSS')) from job_log;
select jobdate,from_unixtime(unix_timestamp(jobdate,'YYYY-MM-DD HH:mm:ss.SSS')) from job_log;
select jobdate,cast(date_format(jobdate,'YYYY-MM-DD HH:mm:ss.SSS') as timestamp) from job_log;

请帮帮我。
提前谢谢

r55awzrz

r55awzrz1#

原始时间戳太长,请使用10位数字:

hive> select from_unixtime(cast(substr('1536945012211.kc',1,10) as int),'yyyy-MM-DD HH:mm:ss.SSS');
OK
2018-09-257 10:10:12.000
Time taken: 0.832 seconds, Fetched: 1 row(s)
hive> select from_unixtime(cast(substr('1536945012211.kc',1,10) as int),'yyyy-MM-dd HH:mm:ss.SSS');
OK
2018-09-14 10:10:12.000
Time taken: 0.061 seconds, Fetched: 1 row(s)
hive>

相关问题