2012-07-12 41 views
4

在Oracle中,如果列類型是datetime,如何進行此日期比較?我想保留字符串格式'MM/dd/yyyy'。基於格式的Oracle日期時間比較

該怎麼辦?

感謝

select * from my_tbl 
where mycol >= '07/11/2012' 
+0

我會將傳入的日期參數轉換爲日期時間,可能類似於'TO_DATE()'。並且記住所有的範圍都應該是下限包含,上限排他。實際上,根據上下文,最好在應用程序代碼中使用時間戳。無論如何,轉換表中的每一行都是一個糟糕的主意。 – 2012-07-12 20:37:24

回答

7

假設日期是指7月11日:

select * 
from my_tbl 
where mycol >= to_date('07/11/2012', 'MM/DD/YYYY'); 

如果這個日期應該是11月7日:

select * 
from my_tbl 
where mycol >= to_date('07/11/2012', 'DD/MM/YYYY'); 

取決於你的價值觀如何填補mycol,你可能也想擺脫時間部分:

select * 
from my_tbl 
where trunc(mycol) >= to_date('07/11/2012', 'DD/MM/YYYY'); 
+0

在你的第三個'SELECT'的具體例子中,'TRUNC'排除了使用'mycol'上的任何索引。在這種情況下,'TRUNC'是不必要的,因爲如果'TRUNC(mycol)'大於或等於午夜的某個日期,那麼'mycol'也將總是大於或等於同一日期值。 – Tebbe 2012-07-13 15:07:34