美好的一天,我正在编写一些代码,其中 -
1) 如果在工作日(周一至周四)东部时区(美国)下午 5:00 之后和工作日东部时区(美国)上午 7:59:59 之前提交请求,则日期将更改为下一个业务一天@ 8:00 AM。
2) 如果请求是在周五下午 5:00 到下周一上午 7:59:59 之前提交的,则时间会按上述方式累计。
3)然后,代码需要检查另一个日期字段以比较“接受”时间(在提交日期或“新”日期的 4 小时内)。
例如:
如果请求 001 是在 2013 年 4 月 17 日凌晨 02:00 提交的,则其新日期将为 2013 年 4 月 17 日上午 8:00。
如果请求 002 是在 04/17/2013 06:45PM 提交的,那么它的新日期将是 04/18/2013 08:00AM。
如果请求 003 是在 04/20/2013 05:45AM(这是星期六)提交的,那么它的新日期将是 04/22/2013 08:00AM。
我一直在将代码拼凑在一起,希望能在最终的代码中将它们整合在一起。
这就是我到目前为止所拥有的(对于日期转换代码)
,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)