Рабочая смена в разрезе 12 часов (день, ночь)
Требовалось выбрать значения которые происходили в разрезе двух смен — "дневная" и "ночная". Если дневную высчитать легко, так как она числится с 8:00:00 до 20:00:00 в разрезе одного дня, то ночную высчитать сложнее, так как там данные в разрезе двух дней. Как итог пришел к следующему сложному запросу. Прошу прокомментировать, и если есть варианты проще прошу показать.
select GETDATE()
, case when GETDATE() between DATEADD(hour,+20,CAST(CAST(DATEADD(hour,-12,GETDATE())as date)as datetime)) and DATEADD(hour,+8,CAST(CAST(DATEADD(hour,+12,GETDATE())as date)as datetime)) then 'Ночная смена' else 'Дневная смена' end as timedat
