4
在Oracle中,如果列類型是datetime,如何進行此日期比較?我想保留字符串格式'MM/dd/yyyy'。基於格式的Oracle日期時間比較
該怎麼辦?
感謝
select * from my_tbl
where mycol >= '07/11/2012'
在Oracle中,如果列類型是datetime,如何進行此日期比較?我想保留字符串格式'MM/dd/yyyy'。基於格式的Oracle日期時間比較
該怎麼辦?
感謝
select * from my_tbl
where mycol >= '07/11/2012'
假設日期是指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');
在你的第三個'SELECT'的具體例子中,'TRUNC'排除了使用'mycol'上的任何索引。在這種情況下,'TRUNC'是不必要的,因爲如果'TRUNC(mycol)'大於或等於午夜的某個日期,那麼'mycol'也將總是大於或等於同一日期值。 – Tebbe 2012-07-13 15:07:34
我會將傳入的日期參數轉換爲日期時間,可能類似於'TO_DATE()'。並且記住所有的範圍都應該是下限包含,上限排他。實際上,根據上下文,最好在應用程序代碼中使用時間戳。無論如何,轉換表中的每一行都是一個糟糕的主意。 – 2012-07-12 20:37:24