2012-09-26 120 views
19

比較時間戳我有一個時間戳字段,我只是想給它的日期部分在Oracle中比較我的查詢甲骨文日期

如何做到這一點,

SELECT * 
FROM Table1 
WHERE date(field1) = '2012-01-01' 
+2

您應該**不**依賴於隱式數據轉換。 ''2012-01-01''不是日期,而是字符。您應始終使用'to_date()'或ANSI DATE文字來確保您的SQL在NLS設置不同時不會中斷。 –

回答

37

可以truncate的日期部分:

select * from table1 where trunc(field1) = to_date('2012-01-01', 'YYYY-MM-DD') 

這種方法的問題在於,在field1任何索引將不會被使用,因爲函數調用。

或者(更友好指數)

select * from table1 
where field1 >= to_timestamp('2012-01-01', 'YYYY-MM-DD') 
    and field1 < to_timestamp('2012-01-02', 'YYYY-MM-DD') 
3

您可以截斷日期

SELECT * 
FROM Table1 
WHERE trunc(field1) = to_Date('2012-01-01','YYY-MM-DD') 

看那SQL Fiddle更多的例子。

0

to_date格式爲我工作。請考慮日期格式: MON-,MM,.,-

t.start_date >= to_date('14.11.2016 04:01:39', 'DD.MM.YYYY HH24:MI:SS') 
t.start_date <=to_date('14.11.2016 04:10:07', 'DD.MM.YYYY HH24:MI:SS')