php - 获取按月分组的 2 个日期之间该月的总天数
问题描述
我有一个酒店房间预订系统,有时会在一个月内开始预订,在另一个月内完成预订。例如 2019 年 4 月 22 日至 2019 年 5 月 7 日。
我需要能够查看房间在四月份被预订了多少天。
不知道如何减少下个月的重叠天数。
所以如果我有这些预订:
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 天
我尝试使用DATEDIFF
,SUM
但它也添加了 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 天,这是不正确的。
可以只预订四月的天数吗?
解决方案
您可能需要的是本月的最后一天并在之后区分
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)
推荐阅读
- reactjs - 在 React 中只渲染一次函数
- python - 使用 pandas,如何检查列中是否存在特定序列?
- c - 输出是什么,为什么函数中的指针不会影响代码?
- python - 如何在熊猫数据框滚动窗口中添加一个步骤
- css - 是否可以使用 CSS 在移动设备上将图像从纵向更改为横向?
- owl - 如何在 Protegé 中加入来自 2 个不同本体的等效类?
- c++ - C++ 如何将 std::function 和 std::bind 与具有默认参数和自定义对象参数的成员函数一起使用
- android - 为什么我的 Flutter 应用在 IOS 模拟器上看起来不错,但在 Android 上却溢出了?
- java - 严重:servlet [spring] 的 Servlet.service() 在路径 [/com.elearning.webapp] 的上下文中抛出异常 [请求处理失败;
- html - 没有媒体查询的响应式布局