Table
+--+------------+
|Id| Date |
+--+------------+
|1 | 2017-08-08 |
+--+------------+
|2 | 2017-08-23 |
+--+------------+
|3 | 2017-08-23 |
+--+------------+
|4 | 2017-08-24 |
+--+------------+
|5 | 2017-08-24 |
+--+------------+
查询
SELECT * FROM BoxExits WHERE Date BETWEEN '2017-08-08' AND '2017-08-24'
问题
当我执行查询时,我收到预期的日期(从 id 1 到 3(,除了包含此日期 2017-08-24(从 id 4 到 5(的所有行,收集它的唯一方法是添加一天,以便查询如下所示
SELECT * FROM BoxExits WHERE Date BETWEEN '2017-08-08' AND '2017-08-25'
在这种情况下,将检索包含此日期 2017-08-24 的所有行(从 id 4 到 5(,因为用户是选择日期的人,我不想强迫他将一天添加到正在寻找的日期。
那么我该怎么做才能对查询也给我最大日期(2017-08-24(呢?
我的研究
在搜索时,除了这个之外,我没有找到太多:
SELECT * FROM BoxExits WHERE Date >= '2017-08-08' AND Date <= '2017-08-24'
由于查询说应该包括Date <= '2017-08-24'
2017-08-24,但问题仍然存在。
环境测试 我在phpmyadmin和我正在创建的c#程序中对其进行了测试,两者都给了我相同的结果(从1到3的行(。
可能是您有日期的日期时间,因此请尝试仅使用日期部分:
SELECT *
FROM BoxExits
WHERE DATE(Date) BETWEEN '2017-08-08' AND '2017-08-24'
正确的格式
使用date()
函数,该函数仅从日期时间获取日期。结果范围包括两个日期
SELECT *
FROM BoxExits
WHERE date(Date) BETWEEN '2017-08-08' AND '2017-08-24'