如何根据单独的日期和时间组件创建Oracle日期?

时间:2016-04-15 16:36:16

标签: sql oracle date datetime

如何根据DATE列中的日期和固定字符串创建Oracle DATE变量?

即:使用to_date来自mytable.date_col的日期和固定在“05:30”的字符串?

1 个答案:

答案 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