首页 > 解决方案 > 如何在sql中的查询之间添加一个月的第一天和最后一天?

问题描述

我有一个这样的查询。

SELECT IFNULL(SUM(price),0) as total FROM table1
WHERE table1.id= 33 AND start_time BETWEEN '2019-09-1' AND '2019-09-11'

这工作正常。现在我想要SUM一个月的数据,所以我尝试使用该between功能并获取该月的第一天和最后一天。

SELECT IFNULL(SUM(price),0) as total FROM table1 
WHERE table1.id = 33 AND start_time BETWEEN (SELECT DATEADD(month, DATEDIFF(month, 
'2019-09-15'), 0) AND '2019-09-11'

我用了这个参考

标签: mysqlsql

解决方案


您可以在last_day()没有任何参数的情况下获取函数来获取月份的最后一天,以及date_format(@mydate, '%Y-%m-01')获取月份的第一天。所以,使用:

set @mydate='2019-09-15';

select ifnull(sum(price),0) as total 
  from table1 
 where id = 33 
   and start_time between date_format(@mydate, '%Y-%m-01') and last_day(@mydate);

推荐阅读