Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何选择上一个日历月(不是间隔)?_Mysql - Fatal编程技术网

Mysql 如何选择上一个日历月(不是间隔)?

Mysql 如何选择上一个日历月(不是间隔)?,mysql,Mysql,我有一个名为transaction_date的日期-时间字段,在报告中我需要选择上一个日历月,我该怎么做?(这也适用于一月这样的月份) 我提出了以下建议,但这只有在月份不是一月时才有效 SELECT SUM(amount) AS pay_month FROM `users_payment` WHERE MONTH(transaction_datetime)= MONTH(NOW()) AND YEAR(transaction_datetime)=YEAR(NOW()) 有很多使用间隔函数

我有一个名为transaction_date的日期-时间字段,在报告中我需要选择上一个日历月,我该怎么做?(这也适用于一月这样的月份)

我提出了以下建议,但这只有在月份不是一月时才有效

SELECT SUM(amount)  AS pay_month FROM `users_payment`  WHERE  MONTH(transaction_datetime)= MONTH(NOW()) AND YEAR(transaction_datetime)=YEAR(NOW())
有很多使用间隔函数的示例,但这只是选择时间间隔,而不是我想要的日历月

从'users\u payment'中选择SUM(amount)作为'year\u month',其中DATE\u ADD(NOW(),INTERVAL-1 month)
但这不是我想要的,我只想选择去年12月的销售总额(记住表中还有其他年份我不想要的,如1979年、1981年……等等)


同样的报告下一节,我需要选择最后2个日历月,我不知道有任何想法如何做到这一点

您尝试过以下方法吗

SELECT SUM(amount)  AS `year_month` FROM `users_payment`
WHERE MONTH(DATE_ADD(NOW(), INTERVAL -1 MONTH)) = MONTH(transaction_datetime)
以上工作应显示上个月的情况;然而,它并不区分年份

再想一想,我明白了你想做什么——获得给定月份的所有交易。试试这样吧

SELECT SUM(amount)  AS `year_month` FROM `users_payment`
WHERE transaction_datetime BETWEEN date_format(NOW() - INTERVAL 1 MONTH, '%Y-%m-01')
   AND last_day(NOW() - INTERVAL 1 MONTH)

这将列出上一个日历月的所有交易。更改
间隔
值以选择多个月。

您是否尝试过以下方法

SELECT SUM(amount)  AS `year_month` FROM `users_payment`
WHERE MONTH(DATE_ADD(NOW(), INTERVAL -1 MONTH)) = MONTH(transaction_datetime)
以上工作应显示上个月的情况;然而,它并不区分年份

再想一想,我明白了你想做什么——获得给定月份的所有交易。试试这样吧

SELECT SUM(amount)  AS `year_month` FROM `users_payment`
WHERE transaction_datetime BETWEEN date_format(NOW() - INTERVAL 1 MONTH, '%Y-%m-01')
   AND last_day(NOW() - INTERVAL 1 MONTH)
这将列出上一个日历月的所有交易。更改
间隔值以选择多个月。

您可以尝试此操作--

你可以试试这个--