SELECT * FROM `incomes` WHERE incomeDate BETWEEN '28-12-2016' and '31-01-2017'
工作时,此查询无法正常工作,但是当我做下面的查询,那么显示结果SQL查询之间无法正常
SELECT * FROM `incomes` WHERE incomeDate BETWEEN '28-12-2016' and '31-12-2016'
SELECT * FROM `incomes` WHERE incomeDate BETWEEN '28-12-2016' and '31-01-2017'
工作时,此查询无法正常工作,但是当我做下面的查询,那么显示结果SQL查询之间无法正常
SELECT * FROM `incomes` WHERE incomeDate BETWEEN '28-12-2016' and '31-12-2016'
请更改日期格式,在水平的研究MySQL支持“YYYY-MM-DD”日期甲。请使用下面的查询。
SELECT * FROM incomes WHERE incomeDate BETWEEN '2016-12-28' and '2017-01-31'.
希望这会对你有所帮助。
您正在比较日期列和(两个)字符串文字。这里发生的是将日期转换为字符串并按字典顺序进行比较。相反,您应该明确地将字符串转换为日期,然后按日期顺序进行比较:
SELECT *
FROM incomes
WHERE incomeDate BETWEEN STR_TO_DATE('28-12-2016', '%d-%m-%Y') AND
STR_TO_DATE('31-01-2017', '%d-%m-%Y')
嗯,它总是一个词典对比! – Strawberry
10 ...'incomeDate'列的数据类型是什么?它被声明为'DATE'或'VARCHAR'吗?请注意,格式为dd-mm-yyyy的字符串文字是* not * canonical;字符串的比较从左到右逐个字符地进行。因此,两个字符串文字之间的字符串值“* 29 -07-1999”将被置于*之间,但代表*日期*,日期不是。 – spencer7593