【发布时间】:2015-08-27 08:26:05
【问题描述】:
如果用户选择"2015-08-27 to 2015-08-29" 之间的日期,那么 29 被认为是他的结帐日期,所以我想输出 27 和 28 的比率。
现在下面这段代码输出 3 天,它只需要输出 2 天
数据库
$pdo = $dbo->prepare(
"SELECT r.*, rr.rid, SUM(ABS(DATEDIFF(:ci, :co) * rr.rate)) as totalsum, rr.sdate, rr.edate
FROM rooms r
LEFT JOIN rates as rr ON r.id=rr.rid
WHERE r.id NOT IN (SELECT room_id FROM reservation as b WHERE (b.checkout <= :ci
AND b.checkin >= :co) OR (b.checkout >= :ci AND b.checkin <= :co))
AND (rr.sdate >= :ci AND rr.edate <=:co) OR (rr.sdate <=:ci AND rr.edate >=:co)
GROUP BY rr.rid, r.room_name");
//$pdo->bindValue(':stat', 'confirm', PDO::PARAM_STR);
$pdo->bindParam(':ci', $check_in, PDO::PARAM_STR);
$pdo->bindParam(':co', $check_out, PDO::PARAM_STR);
if (!$pdo->execute()) {
print_r($pdo->errorInfo());
} else {
//Do something
}
【问题讨论】:
-
不清楚的问题。你的表是什么(显示结构和数据示例)?查询返回什么?你期待什么结果?
-
现在查询输出 3 天费率它只需要输出 2 天
-
那么不要使用
-
...或者您可以执行 DATEDIFF(...)-1 删除额外的一天
-
两者都不起作用我将
<=更改为<并尝试了DATEDIFF(...)-1