2014-01-07 3 views
3

У меня есть поле datetime с именем entrytimestamp, с содержимым поля, например: 2014-01-07 16:20:00. Я хотел бы запросить все данные, которые имеют entrytimestamp после 09:00:00 часов, независимо от того, какая дата была.Informix SQL Compare DateTime value on Where Statement

У меня есть прототип запрос:

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

Я не знаю, если он выполняет хорошо, , но вы могли бы сравнить непосредственно с временной частью DateTime,

я думаю отливать здесь должен выполнить довольно быстро (просто отрезает даты)

select * 

from (select getdate() as mydatetime) as data 

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

EDIT, только заметил, что это для Informix SQL, s o не уверен, что это работает тогда, извините