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

问题描述 投票:1回答:1

我想在特定日期之前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-03-02,我希望它查找2018-02-28和2018-03-04之间相同金额的任何数据,如上面的查询中所示。

我怎么能做到这一点?

sql date mariadb
1个回答
0
投票

不完全是。 <>的意思是“不等于”。许多语言都使用!=(许多数据库都支持这种语言)。

你想要的逻辑更像这样:

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()
  • 区间表达式可能不是您想要的。当我读到这个问题时,你对这个区间的措辞含糊不清。
© www.soinside.com 2019 - 2024. All rights reserved.