我有一张有两列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'
答案 0 :(得分:0)
您很好地解释了您的问题。但不幸的是,这是不可能的。如果将任何字段定义为日期,则仅是日期。当您添加小时,分钟,秒-任何一个时,您都必须将它们定义为时间戳。日期格式将仅包含年份月份和日期。