【发布时间】:2015-11-10 13:52:21
【问题描述】:
我正在使用旅行软件,我必须检索特定日期的酒店价格。酒店日期是在三个月(2015 年 9 月 1 日至 2015 年 12 月 31 日)之间添加的。我的数据库有两列开始日期和结束日期都是 varchar 类型。日期格式是 mm/dd/yyyy。我必须检索单个日期的值(2015 年 11 月 25 日)。目前我使用的查询是
SELECT *
FROM tbl_roomtype
where `room_id`='17'
and roomoccupancy='Double'
AND startdate<='11/25/2015'
and enddate >='11/25/2015'
查询不完美。所以任何人都可以提出解决方案。
【问题讨论】:
-
您不是在比较日期,而是在比较 字符串。这会给你不同的结果。当您将日期存储为字符串时会发生这种情况。现在您需要首先将它们转换为日期,然后进行比较。
-
“查询无法正常运行” 什么... 那么,它是否有效?它会在某些时候弄错日期吗?
-
由于您比较字符串,您最好将格式更改为
2015/11/25然后'2015/10/31' < '2015/11/25'TRUE 而不是'31/10/2015' < '25/11/2015'FALSE :-) -
看看MySQL Date Literals。您可以将 2015 年 11 月 25 日格式化为
20151125、2015-11-25以及多种其他方式。这使得 MySQL 将值视为日期,而不是字符串。 -
@EdGibbs 一旦格式正确,对于这个目的,它是否被视为日期或字符串都无关紧要!