Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Oracle > ДатаВремя


Автор: Petro123 20.4.2007, 18:56
Одно из полей таблицы ДатаВременное,

Нужно организовать выборку записей в которую бы попали скажем 
 все от 10 января до 20 января и временем с 10:00 до 12:00 (11 января 9:00 не подходит!)
...

where (table.printtime between to_date('20070110','YYYYMMDD') and to_date('20070121','YYYYMMDD'))
 and  
(table.printtime between to_date('1000',hh24mi') and to_date('1200','hh24mi'))

- Результат 0 записей. Не могу понять почему. Кто нибудь помогите пожалуйста разобраться!



Автор: LSD 20.4.2007, 21:44
Попробуй так:
Код
where 
      (table.printtime between to_date('200701101000','YYYYMMDDhh24mi') 
        and 
       to_date('200701211200','YYYYMMDDhh24mi'))

Автор: Petro123 21.4.2007, 07:05
Вы меня не поняли, ваш запрос выберет линию времени между двумя датами!
Нужно сначала отрезать дату, затем уже отрезать время.
Например с 10 до 20 января время с 10 до 12 часов, остальное время не брать!

Добавлено через 8 минут и 21 секунду
Как вариант переведем время в минуты,
и
...
where (table.printtime between to_date('20070110','YYYYMMDD') and to_date('20070121','YYYYMMDD'))
 and  
(to_char(ch.printtime,'hh24')*60+to_char(ch.printtime,'mi') between 10*60+0 and 12*60+0))
...
Меня все же интересовало почему 
table.printtime between to_date('1000',hh24mi') and to_date('1200','hh24mi'))
не работало!

Автор: LSD 21.4.2007, 15:16
Цитата(Petro123 @  21.4.2007,  08:05 Найти цитируемый пост)
Меня все же интересовало почему 
table.printtime between to_date('1000',hh24mi') and to_date('1200','hh24mi'))
не работало!

Потому что, такого типа данных как время в Oracle нет, есть только дата-время. Соответвенно когда ты пишешь to_date('1000',hh24mi'), то формируется полная дата, время будет то которое ты указал, а дата текущая. И сравниваться будут полные даты.
Сделай так:
Код
to_number(to_char(table.printtime, 'SSSSS')) between 36000 and 43200



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)