gpt4 book ai didi

php - MySQL - DATE_SUB() 和 DATE_SUB() 错误之间的搜索查询

转载 作者:行者123 更新时间:2023-11-30 23:20:34 26 4
gpt4 key购买 nike

我正在尝试在 (date-7days) 和 (date-1day) 之间的日期范围内使用 DATE_SUB() 进行搜索查询(使用 pdo php 和 mysql),例如:

end_date is 2013-03-26
search between 2013-03-19 and 2013-03-25 `

下面的查询使用第一个 date_sub(7 天间隔)但忽略第二个(date_sub(1 天间隔)所以它在 2013-03-19 和 2013-03-26 之间搜索。

$sevd_query = " 
SELECT
booking_id,
DATE_FORMAT(start_date, '%e/%c') AS s_d,
DATE_FORMAT(end_date, '%e/%c') AS e_d
FROM
bsi_bookings as bb
INNER JOIN
bsi_reservation as br ON bb.booking_id=br.bookings_id
WHERE
bc.c_id=:c_id AND
:day BETWEEN DATE_SUB(bb.end_date, INTERVAL 7 DAY) AND DATE_SUB(bb.end_date, INTERVAL 1 DAY)
";

有人可以帮忙吗?我已经尝试解决这个问题一个星期了,但没有成功

最佳答案

从句:

:day BETWEEN DATE_SUB(bb.end_date, INTERVAL 7 DAY) AND
DATE_SUB(bb.end_date, INTERVAL 1 DAY)

可以表示为:

day >= (end_date - 7) AND
day <= (end_date - 1)

可以重写为:

(day + 7) >= end_date AND
(day + 1) <= end_date

这与:

end_date <= (day + 7) AND
end_date >= (day + 1)

这也是:

end_date >= (day + 1) AND
end_date <= (day + 7)

也可以写成:

end_date BETWEEN (day + 1) AND (day + 7)

我认为这不是您想要的。

试试这个:

SELECT 
booking_id,
DATE_FORMAT(start_date, '%e/%c') AS s_d,
DATE_FORMAT(end_date, '%e/%c') AS e_d
FROM
bsi_bookings as bb
INNER JOIN
bsi_reservation as br ON bb.booking_id=br.bookings_id
WHERE
bc.c_id=:c_id AND
bb.end_date BETWEEN :day - INTERVAL 7 DAY AND :day - INTERVAL 1 DAY;

如果 end_date 字段被索引,这将允许使用索引。

如果要搜索的字段包含在函数中,则不会使用索引。

关于php - MySQL - DATE_SUB() 和 DATE_SUB() 错误之间的搜索查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15649466/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com