1

このクエリが戻って今月より前のレコードを取得しない理由がわかりません。先月は問題なく動作し、今日は 6 月 1 日にヒットし、先月のレコードは取得されません。

過去 7 日間

SELECT SUM(sum) AS sum FROM cl_work_orders WHERE user_id = ? AND workorder_date <= CURDATE() AND workorder_date > (CURDATE() - 8)

過去 30 日間

SELECT SUM(sum) AS sum FROM cl_work_orders WHERE user_id = ? AND workorder_date <= CURDATE() AND workorder_date > (CURDATE() - 31)

昨日

SELECT SUM(sum) AS sum FROM cl_work_orders WHERE user_id = ? AND workorder_date < CURDATE() AND workorder_date > (CURDATE() - 2)

先月はみんな元気に働いていました。先月サイトを立ち上げたばかりで、今日まで「新月号」を見ることができませんでした。

4

2 に答える 2

2

それ以外の

CURDATE() - 8

使用する

CURDATE() - INTERVAL 8 DAY

また

DATE_ADD(CURDATE(), INTERVAL -8 DAY)

CURDATE() の値は、それを使用しているコンテキストによって異なります。数値を追加しようとしている場合、数値として機能します。CURDATEのMySQL ドキュメントでは、数値と文字列の使用例でこれについて言及しています。

于 2013-06-01T14:08:10.670 に答える
1

代わりに Interval キーワードを使用してみてください。

SELECT SUM(sum) AS sum 
FROM cl_work_orders 
WHERE user_id = ? 
AND workorder_date < CURDATE() 
AND workorder_date > DATE_SUB(CURDATE(),INTERVAL 1 Month) 

SELECT SUM(sum) AS sum 
FROM cl_work_orders 
WHERE user_id = ? 
AND workorder_date < CURDATE() 
AND workorder_date > DATE_SUB(CURDATE(),INTERVAL 8 DAY) 

試してみる。それはあなたのために働くはずです。

于 2013-06-01T14:11:45.463 に答える