美好的一天,我工作的一些代碼,其中 -的Oracle SQL11克 - 下一個工作日查詢
1)如果請求是在工作日的下午5:00時區東部(美國)後提交(週一至週四)和美國東部時區上午7點59分59秒之前的工作日,比日期將更改爲下一工作日@上午8:00。
2)如果一個請求5:00 PM之間在星期五提交和前上午07時59分59秒,繼星期一,比如上面提到的時間捲起。
3)然後,代碼需要檢查另一個日期字段進行比較的「接受的」時間(4小時的提交日期或「新」的日期)的範圍內。
例如:
如果請求001提交2013年4月17日上午02點00,那麼它的新的日期將是2013年4月17日08:00 AM。
如果請求002提交2013年4月17日下午6時45分,那麼它的新的日期將是2013年4月18日08:00 AM。
如果請求003提交2013年4月20日上午5點45分(這是一個星期六),那麼它的新的日期將是2013年4月22日08:00 AM。
我一直piecemailing代碼一起,在希望我能在最後的代碼把他們放在一起。
這是我迄今爲止(對於日期轉換代碼)
,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和更新我的代碼如下,但我現在得到一個「無效標識符」錯誤。我不相信有任何錯別字...我需要做別的事嗎? –