2012-01-13 53 views
31

我需要查找特定時間範圍內的行。Oracle SQL:where子句中的時間戳

select * 
from TableA 
where startdate >= '12-01-2012 21:24:00' 
    and startdate <= '12-01-2012 21:25:33' 

即查找時間戳精度爲秒的行,我該如何實現?

+0

什麼是你的表的模式的使用to_timestamp()? – simchona 2012-01-13 18:34:13

+0

如果在問題中使用查詢,會發生什麼情況? – 2012-01-13 18:36:12

+0

有問題的字段是「TIMESTAMP」, – sid 2012-01-13 18:37:03

回答

71

您需要使用TO_TIMESTAMP()將字符串轉換到一個適當的時間戳值:

to_timestamp('12-01-2012 21:24:00', 'dd-mm-yyyy hh24:mi:ss') 

如果你的列是DATE型(也支持秒),你需要使用TO_DATE(的)

to_date('12-01-2012 21:24:00', 'dd-mm-yyyy hh24:mi:ss') 

進入一個這個where條件使用以下方法:

select * 
from TableA 
where startdate >= to_timestamp('12-01-2012 21:24:00', 'dd-mm-yyyy hh24:mi:ss') 
    and startdate <= to_timestamp('12-01-2012 21:25:33', 'dd-mm-yyyy hh24:mi:ss') 

你永遠需要一個列的類型是'戳」

編輯糾正錯字

+0

我得到一個錯誤:「ORA-01830:日期格式圖片在轉換整個輸入字符串之前結束」 這裏是我的查詢:「select * from TableA where To_Timestamp(startdate,'DD-MM-YYYY HH24: MI:SS')> To_Timestamp('12 -01-2012 21:24:00','DD-MM-YYYY HH24:MI:SS');「 – sid 2012-01-13 18:44:28

+0

在字段中的值是「12-JAN-12 09.24.06.355000000 PM」及其在Oracle數據庫 – sid 2012-01-13 18:46:51

+0

@ user1095057時間戳字段:你不不需要申請'TO_TIMESTAMP()'你的列,但您的輸入值。看我的編輯。 – 2012-01-13 19:06:41