获取按月份分组的两个日期之间的月份的总天数

时间:2019-05-04 04:51:52

标签: php mysql

我有一个用于酒店房间的预订系统,有时有些预订从一个月开始,到另一个月结束。例如,2019年4月22日至2019年5月7日。

我需要查看4月预订房间的天数。

无法弄清楚如何减少下个月的重叠天。

所以,如果我有这些预订:

07/Apr/2019 to 12/Apr/2019
22/Apr/2019 to 07/May/2019
29/May/2019 to 03/June/2019

它应该给我:

2019年4月:13天 2019年5月:10天 2019年6月:3天

我尝试使用DATEDIFFSUM,但是它也添加了MAY Dates。


$sql = "SELECT 
id, SUM(DATEDIFF(booking_to, transaction_date)) + 1 AS occup,
COALESCE(COUNT(id), 0) AS `transactions`,
COALESCE(SUM(revenue), 0) AS `revenue`
FROM transactions
WHERE property_id = $pvid
AND MONTH(transaction_date) = $tranmonth 
AND YEAR(transaction_date) = $tranyear
group by property_id"; 

当前它给了我20天,这是不正确的。

有可能只预订4月的天数吗?

1 个答案:

答案 0 :(得分:0)

您可能需要的是该月的最后一天,然后比较

SELECT LAST_DAY(NOW());

编辑:

     select now() as now, timestampdiff(day, now(), last_day(now())) as diff;
+---------------------+------+
| now                 | diff |
+---------------------+------+
| 2019-05-04 05:48:43 |   26 |
+---------------------+------+
1 row in set (0.00 sec)