选择BETWEEN日期不适用于一年 - MySQL

时间:2015-09-24 11:40:51

标签: mysql sql select

我使用此查询在日期之间选择数据:

SELECT id, date FROM table WHERE date BETWEEN '09/10/2015' and '09/23/2015';

我得到了这些结果:

1   09/11/2015
2   09/13/2015
3   09/16/2015
4   09/21/2015
5   09/21/2015
6   09/21/2015
7   09/22/2015
8   09/23/2015

但是,当我将日期更改为一年之前,而不是再次显示所有这些数据时,它会返回忽略年份的结果:

SELECT id, date FROM table WHERE date BETWEEN '09/15/2014' and '09/23/2015';

结果:

3   09/16/2015
4   09/21/2015
5   09/21/2015
6   09/21/2015
7   09/22/2015
8   09/23/2015

我错过了什么?

编辑:

日期列数据类型:varchar。

2 个答案:

答案 0 :(得分:2)

看起来你犯了罪。 。 。将日期值存储为字符串。这是不好的。 SQL具有日期和丰富功能的内置数据类型。

因此,您需要使用@POST @Consumes("application/json") @Path("/json") public String addProductFromJson(Product p){ pDao.addProduct(p); return "OK"+p; } 转换数据:

str_to_date()

MySQL不知道您打算将某个字符串列作为日期,因此所有比较都是以字符串形式完成的。您还应该习惯使用ISO标准YYYY-MM-DD格式来表示日期。

答案 1 :(得分:2)

试试这个......

SELECT id, date FROM table WHERE date BETWEEN STR_TO_DATE('09/10/2015','%d/%m/%Y') and STR_TO_DATE('09/23/2015','%d/%m/%Y');