php - 获取按月分组的 2 个日期之间的月总天数

标签 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 日期。


$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 月的天数?

最佳答案

您可能需要的是该月的最后一天并diff

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)

关于php - 获取按月分组的 2 个日期之间的月总天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55979554/

相关文章:

php - MySQL + PHP : select count group by day and user

php - mybb数据库加密密码的方法

mysql multiple NOT in where 条件基于另一个查询的结果

mysql - MySQL 查询中的 2 个或 3 个复选框

php - 正确显示关联数组的结果 Laravel/PHP

php - 如何在 pdo 语句中绑定(bind)限制值?

php - 为什么包含在我的 PHP 文件中不包括我的变量?

sql - mysql 重复记录字段

MySQL 5.7 : convert simple JSON_ARRAY to rows

php - Laravel 返回带有旧输入的页面以进行验证