2

我的表中有以下记录,名为“rooms_prices”

id  room_id     date_from   date_to price
55  11          02/01/2014  12/31/2014  2250

每当我尝试在我的 PHP 代码中执行一条 SQL 语句时,当我查询的日期不在日期范围内时,我总是会得到一个结果。

这是我的 SQL 语句:

SELECT price FROM rooms_prices WHERE room_id = 11 AND DATE_FORMAT( date_from, '%m/%d/%Y' ) <= '12/01/2013' AND DATE_FORMAT( date_to, '%m/%d/%Y' ) >= '12/01/2013'

此 SQL 语句始终输出 2250。它应该只返回日期在 02/01/2014 和 12/31/2014 之间的记录。

有人知道怎么修这个东西吗?

4

1 回答 1

2

使用 YMD 顺序的日期格式:

SELECT price
FROM rooms_prices
WHERE room_id = 11 AND
      DATE_FORMAT( date_from, '%Y-%m-%d' ) <= '2013-12-01' AND
      DATE_FORMAT( date_to, '%Y-%m-%d' ) >= '2013-12-01';

您正在将比较作为字符串进行,这就是您的版本失败的原因。

将比较作为日期实际上会更好:

SELECT price
FROM rooms_prices
WHERE room_id = 11 AND
      date_from <= date('2013-12-01') AND
      date_to >= date('2013-12-01');

甚至只是使用between

WHERE room_id = 11 AND
      date('2013-12-01') between date_from and date_to
于 2013-08-24T11:46:39.590 回答