首页>Program>source

我正在构建图表,我想接收每个月的数据。

这是我的第一个有效的请求:

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的例子吗?

最新回答
  • 1月前
    1 #

    您需要 DATE_ADD/DATE_SUB

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

    应该可以。

  • 1月前
    2 #

    正如A Star所建议的,我总是按照以下方式使用某些东西:

    DATE(NOW()) - INTERVAL 1 MONTH
    

    类似地,您可以执行以下操作:

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

    ,依此类推.比输入 DATE_ADD容易得多 或 DATE_SUB 一直都是:)!

  • 1月前
    3 #

    我通常使用

    DATE_ADD(CURDATE(), INTERVAL - 1 MONTH)
    

    与Pekka几乎相同,但是通过这种方式,您可以控制INTERVAL为负值或正值...

  • 空的JavaScript数组的布尔值冲突
  • 如何使用Scala Stream类读取大型CSV文件?