2013-03-16 60 views
2

我有,我保存時間爲VARCHAR處理表:甲骨文 - 使用TO_DATE,如何將VARCHAR轉換爲今天的日期

Times 
starttime 
00:00 
16:00 
22:00 

從這個表,我可以列轉換爲這樣的日期:

Select to_date(starttime,'hh24:mi') from times 

這給了我以下內容:

01/03/2013 00:00:00 
01/03/2013 16:00:00 
01/03/2013 22:00:00 

我怎樣才能改變這個查詢,所以我可以用前綴的時間值今天的日期,所以我得到代替如下:(16/03/2013是今天的日期)

16/03/2013 00:00:00 
16/03/2013 16:00:00 
16/03/2013 22:00:00 

感謝

回答

5
to_date(to_char(sysdate, 'dd.mm.yyyy')||' '||starttime, 'dd.mm.yyyy hh24:mi') 
1

您可以添加當前的日期和月份的開始之間的差異。我更喜歡這樣的字符串操作,因爲你堅持使用日期,但它沒有太大的區別。

您可以使用TRUNC()去解決它:

select to_date('09:00','hh24:mi') + (trunc(sysdate) - trunc(sysdate, 'mm')) 
    from dual 

SQL Fiddle

trunc(sysdate)是今天最早和trunc(sysdate, 'mm')是月初。 Oracle的日期算術意味着它返回今天和月初之間的日差;爲您提供您需要添加到原始TO_DATE()的差異。