2014-01-07 72 views
3

我有一個名爲entrytimestamp的日期時間字段,該字段的內容爲例如:2014-01-07 16:20:00。我想查詢在09:00:00點之後entrytimestamp之後的所有數據,不管它是什麼日期。Informix SQL在Where語句上比較DateTime值

我有一個原型查詢:

select * 
from trading 
where to_char(entrytimestamp, "%H%M%S") >= "090000" 

但我認爲這在邏輯上是錯誤的,因爲它會比較文本字符串,而不是序列值。什麼是正確的做法?

回答

2

使用EXTEND()函數來提取部分時間:

select * 
from mytable 
where extend(entrytimestamp, hour to second) > '09:00:00' 
+0

是否保證使用時間序列比較,而不是按字母順序? –

+1

沒有區別:當時間格式化爲字段中的前導零時,時間和字母排序是相同的 – Bohemian

0

我不知道它是否表現良好, 但你可以直接與日期時間的時間部分相比,

我覺得投在這裏應該表現相當快(只是切斷日期)

select * 

from (select getdate() as mydatetime) as data 

where cast(mydatetime as time) > cast('09:00:00' as time) 

編輯,只是注意到這是爲Informix SQL,s o不知道它是否有效然後,對不起