【问题标题】:Trying to get data of last three months试图获取最近三个月的数据
【发布时间】:2014-06-16 09:42:12
【问题描述】:

我想知道过去三个月 Kiln 停了多少次。我有以下查询:

SELECT SUM(kiln_no_stops) from monthly_report 
where date BETWEEN DATE_FORMAT(NOW() - INTERVAL 3 MONTH, '%m-%Y') 
AND DATE_FORMAT(NOW() , '%m-%Y')

当我使用这个查询时,我得到了这个错误

“where 子句”中的未知列“日期”。

但我可以使用以下查询获取过去一个月的数据:

SELECT SUM(kiln_no_stops) 
from monthly_report 
where date_format(yesterday,'%m-%Y')=Date_format(NOW() - INTERVAL 1 MONTH,'%m-%Y')

如何获取过去三个月的“总停靠次数”数据?

【问题讨论】:

  • 看起来您的字段名称是 yesterday 而不是 date
  • 比较日期时不应使用%m-%Y 格式,请使用%Y-%m。否则12-2013 将大于01-2014
  • date 是 mysql 中的保留关键字。尝试使用其他关键字,例如 tran_date 等。这可能是问题所在。
  • @AnkitBajpai 它是保留的,但如果你将它括在反引号中,你仍然可以使用它。 : `日期`
  • 好的,是否有任何通用查询来获取最近三个月的数据或获取从“x”月到“y”月的数据?我的表位于使用 MySQL 进行数据库连接的 SCADA 工具中。是的,没有日期列。但我不知道我可以用什么代替日期。如果我使用 tran_date 而不是日期,我仍然会收到相同的错误 - 'where 子句'中的未知列'tran_date'。

标签: mysql sql


【解决方案1】:

检查这是否对您有帮助:

SELECT SUM(kiln_no_stops) 
from monthly_report 
where yesterday >= now()-interval 3 month;

编辑:

获取最近 3 个月的数据(3 月 1 日至 5 月 31 日,当前日期 = 6 月 18 日)

SELECT SUM(kiln_no_stops) 
from monthly_report where month(yesterday) < month(now())
AND yesterday >= cast( (last_day(now()) + interval 1 day - interval 4 month) as date);

【讨论】:

  • 我假设 Monthly_report 有一个名为“YESTERDAY”的日期字段变量
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-08
  • 2021-11-28
  • 1970-01-01
  • 2022-07-13
  • 1970-01-01
  • 2021-12-01
相关资源
最近更新 更多