Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Запрос с учётом времени  [new]
roma1975
Member

Откуда:
Сообщений: 226
Добрый день.

Есть любая таблица с датой, временем. Как сделать правильно запрос по промежутку дат причем записи в нём каждый день должны попадать в интервале 7:30 до 9:30 и 17:30 до 20:00?

Этот запрос неправилный.

select *
 FROM [KTMOTIS].[dbo].[ALARMS_KUZET] t1 where 
   [InsertTime] between '01.05.2017' and '03.05.2017'
      and ((((DATEPART ( HH , [InsertTime] )>=7) and (DATEPART ( mi , [InsertTime] )>=30)  ) 
and ((DATEPART ( HH , [InsertTime] )<=9) and (DATEPART ( mi , [InsertTime] )<=30)) )
   or ( DATEPART ( HH , [InsertTime] )>=18 and DATEPART ( HH , [InsertTime] )<20 ))   
31 май 17, 14:52    [20527624]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с учётом времени  [new]
мегамозг
Member

Откуда: Екатеринбург
Сообщений: 71
roma1975, получи только время из даты https://www.sql.ru/faq/faq_topic.aspx?fid=110 и проверяй условие по времени between (7:30 and 9:30) or between (17:30 до 20:00)
31 май 17, 15:01    [20527674]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с учётом времени  [new]
VGalamakh
Member

Откуда: Киев (Альба)
Сообщений: 66
Declare @t table (ID int identity(1,1), MyDate datetime)
Insert @t (MyDate)
Values 
('20170530 07:30'), 
('20170530 08:00'),
('20170530 17:30'),
('20170530 21:00'),
('20170531 07:00'), 
('20170531 08:00'),
('20170531 17:00'),
('20170531 19:50')

Select *
from @t
where cast(MyDate as time (0)) between '07:30' and '09:30' 
   or cast(MyDate as time (0)) between '17:30' and '20:00'  
31 май 17, 16:35    [20528140]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с учётом времени  [new]
roma1975
Member

Откуда:
Сообщений: 226
Спасибо получилось.
1 июн 17, 06:16    [20529463]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить