Var*_*pta 1 hadoop hive hortonworks-data-platform
我有时间戳值的字符串,如"2013-02-02T04:04:11.240-4:00".
所以目标是转换时间戳格式,如2013-02-02 04:04:11.我怎样才能做到这一点.
这个命令工作正常
from_unixtime(unix_timestamp(substr('20130502081559999',1,14),'yyyyMMddHHmmss'))
但是当我尝试这样的事情时,它会给'T'错误
from_unixtime(unix_timestamp(substr('2013-05-02T08:15:59.999-4:00',1,19),'yyyy-MM-ddTHH:mm:ss'))
小智 5
对于除时区偏移之外的字符串中的所有内容,此模式将起作用:
from_unixtime(unix_timestamp("2013-02-02T04:04:11.240", "yyyy-MM-dd'T'HH:mm:ss.SSS"))
Run Code Online (Sandbox Code Playgroud)
SimpleDateFormat的模式在这里.
附加模式XXX应该处理您的时区偏移.但正如本页和本页所述,X模式是在Java 7中引入的.
如果你正在运行早期版本的Java(像我一样 - 我的Cloudera QuickStart VM使用1.6.0_32),你将不得不做一些额外的操作来使其工作.一种方法是:
from_unixtime(unix_timestamp(
regexp_replace(
regexp_replace("2013-02-02T04:04:11.240-4:00", "(.*):(.{2})$", "$1$2"),
"(.*)-(.{3})$", "$1-0$2"),
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"))
Run Code Online (Sandbox Code Playgroud)
最里面的regexp_replace将冒号(:)从时区偏移中剥离出来.如果需要,最外面的regexp_replace用额外的零填充时区偏移(即-4:00变为-0400,与Z模式匹配.注意-400与Z模式不匹配).
| 归档时间: |
|
| 查看次数: |
11000 次 |
| 最近记录: |