php - 获取 MySQL 中最后 X 个日期数量

标签 php mysql sql

我有一个 SQL 查询,用于检索过去 7 个月的付款、计算总和并按相关月份对它们进行分组...

查询的唯一问题是,由于某种原因,每月 31 日的查询会出现困惑。为了不那么含糊,它不是选取过去 7 个月(应排除当前月份),而是选取当前月份,就好像它是最后一个月一样(就好像我们已经在 1 月,而今天的实际日期是 31 日)十二月)。

SELECT DATE(date) AS month, SUM(amount_paid) AS amount FROM payments WHERE date > DATE_SUB(NOW(), INTERVAL 7 MONTH) GROUP BY YEAR(date), MONTH(date)");

因此,要分解它,结果应如下所示:

0 => 2013-05-01
1 => 2013-06-03
2 => 2013-07-01
3 => 2013-08-01
4 => 2013-09-02
5 => 2013-10-01
6 => 2013-11-01

但是,结果看起来像这样:

0 => 2013-06-03
1 => 2013-07-01
2 => 2013-08-01
3 => 2013-09-02
4 => 2013-10-01
5 => 2013-11-01
6 => 2013-12-02

我想说我发现了 MySQL date_sub 的一个错误,但我感觉到查询中的某个地方有错误。再说一次,今天是 12 月 31 日,并且只发生在任何给定月份的 31 日。

干杯!

最佳答案

仍在为您寻找答案,但我想知道这是否与此有关:

“如果添加 MONTH、YEAR_MONTH 或 YEAR,并且结果日期中的某一天大于新月份的最大天数,则该天将调整为新月份的最大天数”

mysql> SELECT DATE_ADD('2009-01-30', INTERVAL 1 MONTH); ->'2009-02-28'

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-add

关于php - 获取 MySQL 中最后 X 个日期数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20863129/

相关文章:

PHP PDO访问MySQL

mysql - 在 (J)Ruby 中解析 XML 并插入数据库

sql - 替换 Excel 中数据连接中的 SQL 命令文本

php - 查询数据库来自

javascript - 使用 jquery.load 将两个值传递到 php 文件

php - 如何使用PHP检查数据库中是否存在用户

mysql - 只读 MyISAM 表的加速

php - 如何使用 foreach 循环访问二维数组的第一级键?

sql - 特定日期之间的版本计数

mysql - Order by 使 mysql 变慢