查找一系列日期之间的数据

时间:2018-03-02 21:55:59

标签: sql date mariadb

我希望在特定日期之前2天和之后2天找到具有相同金额的数据。以下查询是从2017-09-02获取数据。我知道<>表示具体日期之前和之后。

SELECT id, datetime_payed, COUNT(data_sum) AS existing
FROM transactions
WHERE id_user = '1'
AND data_sum = '-149.00'
AND DATE(datetime_payed) <> '2018-03-02'

我希望它能查找2018-02-28和2018-03-04之间相同金额的任何数据,如果具体日期是2018-03-02,就像上面的查询一样。

我怎样才能做到这一点?。

1 个答案:

答案 0 :(得分:0)

不完全是。 <>表示&#34;不等于&#34;。许多语言都使用!=(许多数据库都支持这种语言)。

你想要的逻辑更像是这样:

SELECT SUM(data_sum) AS existing
FROM transactions
WHERE id_user = 1 AND
      data_sum = -149.00 AND
      datetime_payed >= DATE('2018-03-02') - interval 2 day AND
      datetime_payed <= DATE('2018-03-02') + interval 2 day ;

注意:

  • 我从SELECT删除了无关的列。如果您想了解更多信息,请使用聚合函数或GROUP BY
  • 数字常量不应使用单引号。我认为id_userdata_sum是数字。
  • 问题的上下文表明您需要SUM()而不是COUNT()
  • 区间表达式可能不是您想要的。当我读到这个问题时,你对这段时间的措辞含糊不清。