Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取按月份分组的两个日期之间的当月总天数_Php_Mysql - Fatal编程技术网

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

Php 获取按月份分组的两个日期之间的当月总天数,php,mysql,Php,Mysql,我有一个酒店房间的预订系统,有时会有一个月后开始,另一个月结束的预订。例如,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但是

我有一个酒店房间的预订系统,有时会有一个月后开始,另一个月结束的预订。例如,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
但是它也添加了五月日期


$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());
编辑:


您可能需要的是一个月的最后一天,然后再diff

SELECT LAST_DAY(NOW());
编辑:


谢谢你的回复,现在的问题是,从下个月开始也要数日。我需要它来计算每月的天数。上面的方法计算从今天到月末的天数。将其更改为对您有意义的内容
select now()as now,timestampdiff(日期,'2019-05-22 15:20:12',最后一天('2019-05-22 15:20:12')作为diff无论如何谢谢,这并没有解决我的问题。我在这里找到了一个解决方案,他展示了如何做到这一点,并获得了正确的天数。谢谢你的回复,现在的问题是,从下个月开始也要数到几天。我需要它来计算每月的天数。上面的方法计算从今天到月末的天数。将其更改为对您有意义的内容
select now()as now,timestampdiff(日期,'2019-05-22 15:20:12',最后一天('2019-05-22 15:20:12')作为diff无论如何谢谢,这并没有解决我的问题。我在这里找到了一个解决方案,他展示了如何做到这一点,并获得了正确的天数。谢谢