「CaseWhen」で「AND」を使用しているときにデータベースからデータを取得するときにエラーが発生しました。「Open」の日付が「現在の日付+ 10日」より大きく、プロジェクトのステータスが「」であるデータのみを取得しようとしています。 「閉じていません」、「ケースの場合」で「and」を使用しましたが、それでも閉じていない状態と閉じた状態が表示されます。どんな助けもいただければ幸いです
SELECT
Open,
`TE Due Date`,
`Certifier Due Date`,
Close,
ProjectStatus,
case when ((DATE_ADD(Open, INTERVAL 10 DAY) > CURDATE()) and (ProjectStatus="Not Closed")) then "10 days passed from open date" else "" END AS "Open Status"
FROM
TCB
where DATE_ADD(Open, INTERVAL 10 DAY) > CURDATE()
order by Open
あなたの状態とあなたの状態の説明が一致していません。「現在の日付よりも大きい+ 10日であるがDATE_ADD(Open, INTERVAL 10 DAY) > CURDATE()
、「現在の日付からマイナス10日よりも大きいオープン日」が必要であると言います。
Open > DATE_ADD(CURDATE(), INTERVAL 10 DAY)
代わりに使用してください。提案された条件を反映するだけでなく、行によって変化しない値で動作するため、より高速である必要があります(つまり、DATE_ADDはクエリの実行ごとに1回だけ計算する必要があります)。
編集:しかし、「オープン日から10日が経過した」から判断すると、これはおそらくあなたが必要とする実際の状態ですOpen < DATE_SUB(CURDATE(), INTERVAL 10 DAY)
。
元の状態は、実際には「過去10日間にオープンした」ことを意味します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加