値の範囲を選択し、それらを年/月/日でグループ化するSQLステートメントがあります。これは正常に機能しているようです。
本当に紛らわしいのは、このSQLを翌日に実行すると、結果の数値が変わることです。全体的には正しいと思いますが、異なる日に実行すると1つか2つ変化します。
例えば。
select Date_format(startDate, "%Y-%m-%d") as Date, count(*) as Online
from
`promotion` p, `subscription` s
where
p.`uid` = s.`uid` and
s.`productId` = "groupproduct"
startDate < now()
GROUP BY YEAR(startDate), MONTH(startDate), DAYOFMONTH(startDate);
X日目の結果
2012-12-25 265
2012-12-26 264
2012-12-27 232
2012-12-28 187
2012-12-29 171
2012-12-30 8935
2012-12-31 3117
X+1日の結果
2012-12-25 265
2012-12-26 264
2012-12-27 231
2012-12-28 187
2012-12-29 171
2012-12-30 8933
2012-12-31 3114
2012年12月27日と2012年12月30日の結果が1つずれていることに注目してください。私は何が欠けていますか?Group by関数を使用してカウントエラーがあると思いますが、何がわかりません。
NB。このSQLは、毎日午前中にcronjobによって実行されます。手作業ではないので、ここでユーザーエラーが原因であるとは思いません(ステートメントの作成を除く)。
編集:申し訳ありませんが、印刷されたSQLに誤りがありました(私は一般向けに少し変更しました)。どこでもstartDateである必要があります。問題はまだ残っています。