45

チャートを作成していて、毎月のデータを受け取りたいです。

これが機能している私の最初のリクエストです:

SELECT s.GSP_nom AS nom, timestamp, AVG( v.vote +  v.prix  ) /2 AS avg
FROM votes_serveur AS v
INNER JOIN serveur AS s ON v.idServ = s.idServ
WHERE s.valide =1
AND v.date > CURDATE() -30
GROUP BY s.GSP_nom
ORDER BY avg DESC

しかし、私の場合、過去12か月のデータを受信するために12のリクエストを書き込む必要がありますが、書き込みを回避するためのトリックはありますか?

//  example for the previous month
 AND v.date > CURDATE() -60
AND v.date < CURDATE () -30

INTERVALについて聞いたので、MySQLのドキュメントにアクセスしましたが、実装できませんでした。

INTERVALの使用例はありますか?

4

3 に答える 3

77

あなたが必要ですDATE_ADD/DATE_SUB

AND v.date > (DATE_SUB(CURDATE(), INTERVAL 2 MONTH))
AND v.date < (DATE_SUB(CURDATE(), INTERVAL 1 MONTH))

動作するはずです。

于 2010-05-08T10:04:20.423 に答える
26

A Starが提案しているように、私は常に次のようなものを使用しています。

DATE(NOW()) - INTERVAL 1 MONTH

同様に、次のことができます。

NOW() + INTERVAL 5 MINUTE
"2013-01-01 00:00:00" + INTERVAL 10 DAY

等々。DATE_ADD入力するよりもずっと簡単ですDATE_SUB:)!

于 2013-04-03T11:37:26.290 に答える
16

普段使っています

DATE_ADD(CURDATE(), INTERVAL - 1 MONTH)

これはPekkaのものとほとんど同じですが、この方法で間隔を負または正に制御できます...

于 2010-05-08T10:09:35.450 に答える