Добрый день, я работаю на некоторый код где -Oracle SQL 11g - следующий рабочий день запрос
1) если запрос был представлен после 5:00 вечера по восточному временной зоны (Америка) в будний день (с понедельника по четверг) и до 7:59:59 AM Восточный часовой пояс (Америка) в будний день, чем дата будет изменена на следующий рабочий день @ 8:00.
2) если запрос был отправлен в период с 5:00 вечера по пятницу и до 7:59:59 утра, что после понедельника, чем время скатывается вверх, как указано выше.
3) Затем код должен проверить другое поле даты, чтобы сравнить «принятое» время (в течение 4 часов с даты отправки или «новой» даты).
Например:
Если запрос 001 был представлен 04/17/2013 2:00 AM, то его новая дата будет 04/17/2013 8:00 утра.
Если запрос 002 был отправлен 17.04.2012 18:45, то его новая дата будет 04/18/2013 08:00.
Если запрос 003 был отправлен 04/20/2013 05:45 (это суббота), то его новая дата будет 22.04.2013 08:00.
Я был связан с кодом вместе, в надежде, что я смогу собрать все это вместе в конечном коде.
Это то, что я до сих пор (для преобразования кода даты)
,CASE
WHEN to_date(('DATE_REQUESTED'),'DAY',nls_date_language = English) in ('Friday','Saturday'))
THEN NEXT_DAY(to_date(('DATE_REQUESTED'),'Monday') + 8/24)
ELSE DATE_REQUESTED
END as Weekend_Converted
Для кода, чтобы проверить, если запрос был принят в течение 4 часов
SELECT RIT_Request_v.*
,CASE
WHEN DATE_ACCEPTED IS NULL THEN 'NOT ACKNOWLEDGED'
WHEN DATE_ACCEPTED > (DATE_REQUESTED + 4/24) THEN 'OVER 4 HOURS'
ELSE 'WITHIN 4 HOURS'
END AS Acknowledgement
FROM RIT.RIT_Request_v
WHERE (("DATE_REQUESTED") BETWEEN trunc(sysdate, 'YYYY') AND trunc(sysdate))
Как отмечено в одном из моих комментариев ниже, я обновил свои кода, и теперь получают ошибки «Неверный идентификатор» -
SELECT RIT_Request_v.*
,CASE WHEN TO_CHAR(DATE_REQUESTED,'D') IN (1,6,7)
THEN NEXT_DAY(DATE_REQUESTED,'MONDAY')
ELSE DATE_REQUESTED + 1 END AS Weekend_Converted
,CASE WHEN DATE_ACCEPTED IS NULL THEN 'NOT ACKNOWLEDGED'
WHEN WEEKEND_CONVERTED IS NULL THEN 'NOT ACKNOWLEDGED'
WHEN DATE_ACCEPTED > (DATE_REQUESTED + 4/24) THEN 'OVER 4 HOURS'
WHEN DATE_ACCEPTED > (Weekend_Converted + 4/24) THEN 'OVER 4 HOURS'
ELSE 'WITHIN 4 HOURS' END AS Acknowledgement
FROM RIT.RIT_Request_v
WHERE (("DATE_REQUESTED") BETWEEN trunc(sysdate, 'YYYY') AND trunc(sysdate))
AND FORM_ID IN (2011,2014,5007,5036,5039,7007,10000,10001,10005,10007,10011,10024,10025,10029,10032,10033,10034,10035,10036,10037,11011,11013,11999,36001)
Я нашел этот пункт: http://stackoverflow.com/questions/4677984/need-to-find-next-and-previous-working-day-in-oracle и обновил мой код следующим образом, но теперь я получаю ошибку «Неверный идентификатор». Я не верю, что есть опечатки ... мне нужно сделать что-то еще? –