如何根据DATE列中的日期和固定字符串创建Oracle DATE变量?
即:使用to_date来自mytable.date_col的日期和固定在“05:30”的字符串?
答案 0 :(得分:2)
您可以转换为字符串并返回,忽略任何现有的时间部分:
to_date(to_char(date_col, 'YYYY-MM-DD') || ' 05:30:00', 'YYYY-MM-DD HH24:MI:SS')
to_char()
只将日期部分作为字符串,例如'2015-04-15'
。然后,您的固定时间将附加到该字符串,因此它变为'2015-04-15 05:30:00'
。然后使用合适的匹配格式模型将其转换为日期。
或者使用trunc()
将日期带回午夜(假设它可能有更晚的时间)并添加代表该时间的一天的分数;这是24小时内5.5小时所以5.5 / 24:
trunc(date_col) + 5.5/24
或与间隔相同的事情:
trunc(date_col) + interval '0 05:30:00' day to second
快速演示所有三个:
with mytable (date_col) as (
select to_date('2016-04-15 15:16:17', 'YYYY-MM-DD HH24:MI:SS') from dual
)
select to_date(to_char(date_col, 'YYYY-MM-DD') || ' 05:30:00',
'YYYY-MM-DD HH24:MI:SS') as res1,
trunc(date_col) + 5.5/24 as res2,
trunc(date_col) + interval '0 05:30:00' day to second as res3
from mytable;
RES1 RES2 RES3
------------------- ------------------- -------------------
2016-04-15 05:30:00 2016-04-15 05:30:00 2016-04-15 05:30:00