是否可以将其强制转换为“ yyyy-MM-dd HH:mm:ss.S”格式的日期?

时间:2019-06-06 10:16:30

标签: hive

我有一张有两列id(字符串)和myTs(bigint)的表。

我想用这两列创建一个视图,但是myTs必须是日期类型:

CREATE myView AS SELECT id, myToDate(myTs) FROM myTable;

myTs是一个时间戳,我想将其转换为欧洲/马德里时区并设置格式yyyy-MM-dd HH:mm:ss.S的日期。 例如,如果执行,则使用myTs = 1167529028000

from_utc_timestamp(myTs, 'Europe/Madrid') 
--Result: '2006-12-31 02:37:08.0'

我得到正确的结果,但是类型是时间戳,如果我尝试将其强制转换为日期,则会丢失格式:

cast(from_utc_timestamp(myTs, 'Europe/Madrid') as date) 
--Result: '2006-12-31'

另一个选择:

date_format(from_utc_timestamp(myTs, 'Europe/Madrid'), 'yyyy-MM-dd HH:mm:ss.S') 
--Result: '2006-12-31 02:37:08.0'

结果是字符串,如果我强制转换为日期,则再次删除格式:

cast(date_format(from_utc_timestamp(myTs, 'Europe/Madrid'), 'yyyy-MM-dd HH:mm:ss.S') as Date) 
--Result: '2006-12-31'

1 个答案:

答案 0 :(得分:0)

您很好地解释了您的问题。但不幸的是,这是不可能的。如果将任何字段定义为日期,则仅是日期。当您添加小时,分钟,秒-任何一个时,您都必须将它们定义为时间戳。日期格式将仅包含年份月份和日期。