2011-12-16 142 views
0

結束存儲在我的數據庫中的日期爲01-01-1900現場emp_doj(Data Type DATE)日期比較00

但檢索數據時,該值是01-jan-00,即使格式化dd-mm-yyyy

我在SQL查詢的一些其他日期進行比較的檢索日期字段。

select * 
form persons 
where per_join = to_date(to_char(i.emp_doj,'DD-MM-YYYY'),'DD-MM-YYYY') 

這裏to_date(to_char(i.emp_doj,'DD-MM-YYYY'),'DD-MM-YYYY')結果01-01-00的價值,而不是01-01-1900

回答

-2

我有它目前爲我的作品一些臨時性的解決方案,我只是改變了我的選擇查詢

select * 
form persons 
where to_date(per_join,'DD-MM-YYYY')= to_date(i.emp_doj,'DD-MM-YYYY') 
0
select to_char(emp_doj,'dd-mm-yyyy') from yourtable 
+0

謝謝偶然的機會,我已經試過,但我仍得到相同的結果,00年1月1日 – Maddy 2011-12-16 11:16:53

+0

您收到此,即使您運行的精確查詢@chance已經發布?複製並粘貼? – Ollie 2011-12-16 11:37:24

4

我懷疑它,是你的默認NLS設置爲IDE您使用的是僅僅顯示了兩位數的年份日期。 Oracle不以任何特定格式存儲日期。它在內部以二進制格式存儲它們。

因此,我建議您檢查IDE和/或數據庫的設置,並且您將看到NLS日期格式設置爲DD-MM-YY,請將其更改爲DD-MM-YYYY,然後您將看到您希望看到的日期。

至於您的查詢,爲什麼要用TO_CHAR然後TO_DATE?如果emp_doj是一個日期字段,並且per_join也是一個日期,那麼就直接比較它們是否相等。如果您試圖減少您的emp_doj值的時間部分,則只需使用TRUNC()即可。關於NLS

的示例和參考:http://www.orafaq.com/wiki/NLS

這裏更多:http://www.oracle.com/technetwork/database/globalization/nls-lang-099431.html