2016-04-15 81 views
0

如何根據DATE列和固定字符串中的日期創建Oracle DATE變量?如何根據單獨的日期和時間組件創建Oracle日期?

即:使用to_date來自mytable.date_col,字符串固定爲「05:30」?

+0

我使用了兩個方法在我對你最後一個問題的回答中* 8-)儘管「變量」是什麼意思,只是查詢中使用的生成值或PL/SQL變量?查詢中的 –

+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()(假設它可能有更晚的時間)將日期返回到午夜,並添加表示該時間的一天的一小部分;其是5.5小時取出的24小時,使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 
+0

工作感謝! –