0

過去5/10/15日間に、日付ごとにグループ化された、毎日作成されているユーザーの数を知りたいと思いました。

過去5日間の日付ごとの申し込みに使用したクエリは次のとおりです。

SELECT CAST(created AS DATE) as DateField , count(email) as Num 
FROM invited_users where created > curdate()-5 
GROUP BY CAST(created AS DATE);

// "created" is a datetime field
// returns 5 rows

これは私が期待したとおりに機能します。

しかし、数字の「5」を「10」または15(または5以外)に変更すると、機能しません。代わりに、データベース内のすべての日付を返します。

SELECT CAST(created AS DATE) as DateField , count(email) as Num 
FROM invited_users where created > curdate()-15 
GROUP BY CAST(created AS DATE);

// returns 97 rows

なぜ?!ここで何が起こっているのですか?

ところで、同じことが他のテーブルでも起こります。

編集:

select curdate(), curdate() -5, curdate() - 15, curdate() + 1, curdate() + 0;

次の結果が得られます:2013年3月5日12:00:00 AM 20130300 20130290 20130306 20130305

これがどのように計算されているのかわかりませんでした。CURDATE()+ 1は明日の日付を示しますが、CURDATE()-5はデコードできない値を示します。

4

1 に答える 1

1

次のようなものを使用してみてください。

CURDATE() - INTERVAL 5 DAY
于 2013-03-05T12:34:09.417 に答える