我有一个包含两列的表,id
(字符串)和myTs
(bigint)。
我想创建一个包含这两列的视图,但myTs
必须是date类型:
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'
我得到了正确的结果,但类型是timestamp,如果我尝试将其强制转换为date,则会丢失格式:
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'
结果是字符串,如果我将其转换为Date,则再次删除以下格式:
cast(date_format(from_utc_timestamp(myTs, 'Europe/Madrid'), 'yyyy-MM-dd HH:mm:ss.S') as Date)
--Result: '2006-12-31'
发布于 2019-06-07 02:06:27
你很好地解释了你的问题。但不幸的是,这是不可能的。如果您将任何字段定义为日期,则它只是一个日期。当你添加小时、分钟、秒时,你必须将它们定义为时间戳。日期格式将只有年、月和日。
https://stackoverflow.com/questions/56475500
复制相似问题