私は現在、他の誰かによって作成されたレポートをサポートしています。WHERE句には、次の2つのステートメントが含まれています。私はそれぞれが何をしているのか、そしてそれぞれの個々の部分が何をしているのか理解していません。これらのステートメントを理解する上での助けをいただければ幸いです。ありがとうございました
and rd.system_ci_date >= ADD_MONTHS(date - EXTRACT(day FROM date) + 1,-1)
and (rd.system_ci_date - rd.ci_date) DAY(4) > 1
ADD_MONTHS(date - EXTRACT(day FROM date) + 1,-1)
前月の1日を返しますが、少し効率的なバージョンは ADD_MONTHS(date - (EXTRACT(day FROM date) - 1),-1)
(rd.system_ci_date - rd.ci_date) DAY(4)
間隔内の両方の日付の差を返します(間に9999日を超えると失敗します)。rd.system_ci_date - rd.ci_date
INTを返すのと同じです。
多分それをに書き直します
and rd.system_ci_date >= ADD_MONTHS(date - (EXTRACT(day FROM date) -1) ,-1)
and rd.system_ci_date > rd.ci_date + 1
少し理解しやすいです
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加