在Hive里我有一些数据。现在我想把 start_timestamp 进入 unix_timestamp 在第二。怎么做?因为 start_timestamp 有两种格式:第一种格式:
start_timestamp
unix_timestamp
2018-03-22 02:54:35
第二种格式:
May 15 2018 5:15PM
mjqavswn1#
第一种格式是 'yyyy-MM-dd HH:mm:ss' 其次是 'MMM dd yyyy hh:mm:aa' . 如果格式错误, unix_timestamp 函数将返回 NULL . 如果需要,请尝试使用一种格式进行转换 NULL ,尝试使用其他格式转换。这可以使用 coalesce 功能:
'yyyy-MM-dd HH:mm:ss'
'MMM dd yyyy hh:mm:aa'
NULL
coalesce
select coalesce(unix_timestamp(start_timestamp ,'yyyy-MM-dd HH:mm:ss'), unix_timestamp(start_timestamp ,'MMM dd yyyy hh:mm:aa') ) as UnixTimestamp from my_table;
使用 from_unixtime() 如有必要,将其转换回给定的格式,如本答案所示。请参见此处的模式示例:SimpleDataFormat
from_unixtime()
1条答案
按热度按时间mjqavswn1#
第一种格式是
'yyyy-MM-dd HH:mm:ss'
其次是'MMM dd yyyy hh:mm:aa'
. 如果格式错误,unix_timestamp
函数将返回NULL
. 如果需要,请尝试使用一种格式进行转换NULL
,尝试使用其他格式转换。这可以使用coalesce
功能:使用
from_unixtime()
如有必要,将其转换回给定的格式,如本答案所示。请参见此处的模式示例:SimpleDataFormat