2010-02-04 70 views
2

我要查詢all_objects表,其中last_ddl_time='01 jan 2010',但它拒絕的日期格式...甲骨文last_ddl_time格式

任何身體給我查詢的確切格式?

回答

0

您可以使用to_date函數來格式化日期。如果輸入文字字符串,Oracle將嘗試使用to_date將該字符串轉換爲默認格式'DD-MON-YY',因此您的日期看起來像「01-JAN-10」。由於Oracle將使用相同的功能,因此您可能希望將它放在自己的位置,並享受自定義格式可提供的更精細的粒度。

這將是很好的注意,存儲在該列的日期最有可能有更精確的日期,包括小時和分鐘,等等。雖然你將採取一點性能損失,你可能會得到更好的使用trunc(last_ddl_time)服務如果您使用=進行測試。

甲骨文的日期有一些很好的信息,在this link

+0

也試過,但沒有用... SELECT * FROM ALL_OBJECTS WHERE last_ddl_time = TO_DATE('01 -01- 2010' , 'DD-MM-YYYY'); – ani8 2010-02-04 03:43:38

+1

「沒有用」? - 發生了什麼 - 它是否發生錯誤,或者您的機器爆炸了? – 2010-02-04 05:07:14

2

正如AKF所說,除非您知道DDL修改的確切時間,否則您應該使用Trunc。您在註釋中添加的查詢正在查找DDL在1/1/2010 00:00:00更改的任何對象。嘗試:

SELECT * 
    FROM all_objects 
WHERE trunc(last_ddl_time) = to_date('01-01-2010','dd-mm-yyyy'); 
+0

提及時間元素。 – APC 2010-02-04 07:05:25

1

我建議你使用德dateliteral

where trunc(last_ddl_time) = date '2010-01-01' 
0
SELECT * 
    FROM all_objects t 
WHERE trunc(t.last_ddl_time, 'DD') = to_date('2010-JAN-01', 'YYYY-MON-DD');