こんにちは、私はいくつかのコードに取り組んでいます -
1) 平日 (月曜日から木曜日) の東部標準時間 (アメリカ) で午後 5 時以降、平日の東部標準時間 (アメリカ) で午前 7 時 59 分 59 秒より前にリクエストが送信された場合、日付は次のビジネスに変更されます。日 @ 午前 8:00。
2) リクエストが金曜日の午後 5 時から次の月曜日の午前 7 時 59 分 59 秒までの間に送信された場合、時間は上記のようにロールアップされます。
3) 次に、コードは別の日付フィールドをチェックして、「受け入れられた」時間 (送信された日付または「新しい」日付から 4 時間以内) を比較する必要があります。
例えば:
リクエスト 001 が 04/17/2013 02:00AM に送信された場合、新しい日付は 04/17/2013 08:00AM になります。
リクエスト 002 が 04/17/2013 06:45PM に送信された場合、新しい日付は 04/18/2013 08:00AM になります。
リクエスト 003 が 2013 年 4 月 20 日午前 5 時 45 分 (これは土曜日) に送信された場合、新しい日付は 2013 年 4 月 22 日午前 8 時になります。
最終的なコードですべてをまとめることができることを期待して、コードをまとめてピースメールしてきました。
これは私がこれまでに持っているものです(日付変換コード用)
,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))
以下のコメントの 1 つに記載されているように、コードを更新したところ、「無効な識別子」エラーが発生しています -
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)