1

私は使用しています

 WHERE WEEK(curdate,3)-WEEK(date)=1 

最後の営業週 (月曜日から日曜日) に記録されたテーブルのすべての行を取得します。一年中うまくいきますが、1月にはしばらくの間0を返すので、取らなければなりません

 WHERE WEEK(curdate,3)+53-WEEK(date)

その場合。OR今年の情報と昨年の情報が両方あると両方必要になるので使えません。私はすでに試したCOALESCE方法IFNULL

 WHERE COALESCE(
     (WEEK(curdate(),3)-WEEK(date,3) = 1),
     (WEEK(curdate(),3)+53-WEEK(date,3) = 1
 )

一年中うまく機能しますが、IFNULLが true の場合はうまくいきません。この場合の効果的な処理についてアドバイスをお願いします。

4

1 に答える 1

0

次を使用して、現在の週の月曜日の日付を取得できます。

select SUBDATE(curdate(), WEEKDAY(curdate()));

次に、述語で今週の月曜日と前の週の月曜日の日付を使用します。

WHERE date >= SUBDATE(curdate(), WEEKDAY(curdate())) - interval 1 week
AND date < SUBDATE(curdate(), WEEKDAY(curdate()))
于 2013-03-01T10:56:40.140 に答える