fer*_*cs2 8 hadoop hive hiveql
我的Hive表中有一个时间戳的以下字符串表示:
20130502081559999
Run Code Online (Sandbox Code Playgroud)
我需要将它转换为如下字符串:
2013-05-02 08:15:59
Run Code Online (Sandbox Code Playgroud)
我试过以下({code} >>> {result}):
from_unixtime(unix_timestamp('20130502081559999', 'yyyyMMddHHmmss')) >>> 2013-05-03 00:54:59
from_unixtime(unix_timestamp('20130502081559999', 'yyyyMMddHHmmssMS')) >>> 2013-09-02 08:15:59
from_unixtime(unix_timestamp('20130502081559999', 'yyyyMMddHHmmssMS')) >>> 2013-05-02 08:10:39
Run Code Online (Sandbox Code Playgroud)
转换为时间戳然后unixtime似乎很奇怪,这样做的正确方法是什么?
编辑 我明白了.
from_unixtime(unix_timestamp(substr('20130502081559999',1,14), 'yyyyMMddHHmmss')) >>> 2013-05-02 08:15:59
Run Code Online (Sandbox Code Playgroud)
要么
from_unixtime(unix_timestamp('20130502081559999', 'yyyyMMddHHmmssSSS')) >>> 2013-05-02 08:15:59
Run Code Online (Sandbox Code Playgroud)
还是......还有更好的方法吗?
看起来你的格式有三毫秒的数字.我猜想,根据SimpleDateFormat,你需要使用以下内容:
from_unixtime(unix_timestamp('20130502081559999', 'yyyyMMddHHmmssSSS'))
Run Code Online (Sandbox Code Playgroud)
希望有所帮助.
| 归档时间: |
|
| 查看次数: |
68172 次 |
| 最近记录: |