Рабочая смена в разрезе 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

Что примерно получаю пример если брать данные из табличной части


Ответы (0 шт):