我使用此查询在日期之间选择数据:
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。
答案 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');