【发布时间】:2019-05-04 22:03:29
【问题描述】:
我有一个酒店客房预订系统,有时预订会在一个月内开始并在另一个月内完成。例如 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 天
我尝试使用 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 天,这是不正确的。
是否可以只预订四月份的天数?
【问题讨论】: