Mysql 如何选择上一个日历月(不是间隔)?
我有一个名为transaction_date的日期-时间字段,在报告中我需要选择上一个日历月,我该怎么做?(这也适用于一月这样的月份) 我提出了以下建议,但这只有在月份不是一月时才有效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()) 有很多使用间隔函数
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)
这将列出上一个日历月的所有交易。更改间隔值以选择多个月。您可以尝试此操作--
你可以试试这个--