Показать сообщение отдельно
Старый 17.06.2008, 17:13   #9  
Poleax is offline
Poleax
Модератор
Аватар для Poleax
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Регистрация: 17.02.2005
Адрес: msk
Записей в блоге: 34
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Перейти на 5.0 - там UTCdatetime используется.

А если по теме - то видимо надо писать сложный фильтр такого плана:
(тек.время > время начала смены И тек.дата = дата начала смены) ИЛИ
(тек.время < время конца смены И тек.дата = дата конца смены) ИЛИ
(тек.дата > дата начала смены И тек.дата < дата конца смены) (это если смена больше суток)
Как видишь запрос собрался, я его из отладки и поймал.
SELECT * FROM MilkShifts WHERE (((StartTime < (60419 + (StartDate - 39614 )*86400)) AND ((60419 - (EndDate - 39614 )*86400)< EndTime))) AND ((StartDate<={ts '2008-06-17 00:00:00.000'})) AND ((EndDate>={ts '2008-06-17 00:00:00.000'})) AND ((StatusShift = 0)) AND ((Milk_IdGroupmaterialResponsibility = N'Гр2' OR Milk_IdGroupmaterialResponsibility = N'Гр3'))

осталось разобраться с приведением типов.

На счет запроса
(тек.время > время начала смены И тек.дата = дата начала смены) ИЛИ
(тек.время < время конца смены И тек.дата = дата конца смены) ИЛИ
(тек.дата > дата начала смены И тек.дата < дата конца смены) (это если смена больше суток)
Тек. время преобразовать в целое число?
тек. дату тоже в целое? или оставить так как strfmt делает ? ('18:10:10' и 17.06.2008)