2012-04-18 121 views
1

我從遠程Oracle數據庫中讀取數據之間的所有數據只讀訪問。我想在一段時間內查詢所有數據。我實際上想在午夜和當前時間之間進行查詢。所以我用的是查詢:獲取特定日期時間

TO_DATE(to_char(sysdate, 'MM-dd-yyyy')||'00:00:00','MM-dd-yyyy HH24:MI:SS') 
AND 
TO_DATE(to_char(sysdate, 'MM-dd-yyyy HH24:MI:SS'),'MM-dd-yyyy HH24:MI:SS') 

但查詢

select TO_DATE(to_char(sysdate, 'MM-dd-yyyy HH24:MI:SS'),'MM-dd-yyyy HH24:MI:SS') from dual 

是隻返回18-APR-12沒有時間。我怎麼也得到時間?

我運行:

ALTER SESSION SET NLS_DATE_FORMAT='DD-MON-YYYY HH24:MI:SS'; 

但我不希望運行此每次任何其他方式來解決這個問題?

+0

我得到時間以及當我運行你的第二個查詢 – 2012-04-18 04:39:22

+0

@AmitBhargava我不是:(似乎有些問題 – kinkajou 2012-04-18 04:49:49

回答

5

你看到的並不是真正存在的東西。
Oracle將日期保存爲阻止日期的數字,並且您在查詢時會看到它的方式取決於您的NLS參數。
事實上,你沒有看到時間並不意味着沒有時間。

爲您的查詢我會做這樣的事情:

... BETWEEN trunc(sysdate) AND sysdate 

我看到在鑄造日期爲一個字符串,然後返回到具有相同格式的日期沒有用......