Меня заинтересовал ответ MT0 на этот вопрос с использованием интервалов и дат.Я работал, пытаясь найти другой способ ответить на вопрос, и я начал задумываться о чем-то.
Используя только интервалы, которые установил MT0:
with weekly_shifts(shift_date,start_time,end_time) as
(SELECT 'MON', INTERVAL '09:00' HOUR TO MINUTE, INTERVAL '18:00' HOUR TO MINUTE FROM DUAL UNION ALL
SELECT 'TUE', INTERVAL '10:00' HOUR TO MINUTE, INTERVAL '19:00' HOUR TO MINUTE FROM DUAL UNION ALL
SELECT 'WED', INTERVAL '09:00' HOUR TO MINUTE, INTERVAL '18:00' HOUR TO MINUTE FROM DUAL UNION ALL
SELECT 'THU', INTERVAL '10:00' HOUR TO MINUTE, INTERVAL '19:00' HOUR TO MINUTE FROM DUAL UNION ALL
SELECT 'FRI', INTERVAL '09:00' HOUR TO MINUTE, INTERVAL '18:00' HOUR TO MINUTE FROM DUAL)
Если все, что у меня естьдни недели в формате DY
(MON,TUE,WED
), и я хочу получить числовую версию дня (2,3,4
), какой самый простой способ сделать это?
Моя единственная идеячто я мог придумать было что-то вроде этого:
select to_char(next_day(sysdate,shift_date),'D') SHIFT_NUM,
weekly_shifts.*
from weekly_shifts