Mysql 将一周内的查找转换为一个月?
我有一个每周获取和分组结果的查找:Mysql 将一周内的查找转换为一个月?,mysql,sql,Mysql,Sql,我有一个每周获取和分组结果的查找: SELECT COUNT(IF(YEARWEEK(Submitted, 1) = YEARWEEK(NOW(), 1), 1, null)) AS Bookings, COUNT(IF(YEARWEEK(Submitted, 1) = YEARWEEK(NOW()- INTERVAL 1 WEEK, 1), 1, null)) AS LastWeekBookings FROM Bookings 是否有一个月替代YEARWEEK,可以让一年、一个月和上一个月计
SELECT
COUNT(IF(YEARWEEK(Submitted, 1) = YEARWEEK(NOW(), 1), 1, null)) AS Bookings,
COUNT(IF(YEARWEEK(Submitted, 1) = YEARWEEK(NOW()- INTERVAL 1 WEEK, 1), 1, null)) AS LastWeekBookings
FROM Bookings
是否有一个月替代YEARWEEK,可以让一年、一个月和上一个月计算一个月的预订量?没有简单的函数可以像
YEARWEEK()合并一年和一周那样合并一年和一个月。因此,只需分别比较两者。并减去间隔1个月
,而不是间隔1周
SELECT
COUNT(IF(YEAR(Submitted) = YEAR(NOW()) AND MONTH(Submitted) = MONTH(NOW()), 1, null)) AS Bookings,
COUNT(IF(YEAR(Submitted) = YEAR(NOW() - INTERVAL 1 MONTH) AND MONTH(Submitted) = MONTH(NOW() - INTERVAL 1 MONTH), 1, null)) AS LastMonthBookings
FROM Bookings
您可以使用该功能确定当前月份或上个月:
SELECT
SUM(LAST_DAY(Submitted) = LAST_DAY(NOW()) AS Bookings,
SUM(LAST_DAY(Submitted) = LAST_DAY(NOW()- INTERVAL 1 MONTH)) AS LastMonthBookings
FROM Bookings
YEAR(Submitted)=YEAR(NOW())和MONTH(Submitted)=MONTH(NOW())
我已经接受了这个答案,因为我假设当年份发生变化时,它不会出错,而当你到1月份时,分别比较月份和年份,从1月起减去一个月将查找同一年12月的结果?@BN83两个答案都不会弄乱日期。对不起,是的,我错过了一年中减去一个月的部分,假设如果是1月,也会减去一年。