Mysql日期范围不返回正确的范围

时间:2017-04-16 09:06:15

标签: mysql sql

这是我的代码:

select date_format(fee_month, '%b-%Y') from bb_fee_info where 
date_format(`FEE_MONTH`,'%b-%Y') >= 'Apr-2016' 
and date_format(`fee_month`, '%b-%Y') <= 'Apr-2017'

根据我的理解,上述声明应从2016年4月至2017年4月返回,但它只会返回April-2017记录,为什么会这样?

我的表fee_month中的FYI存储为date数据类型,例如,对于4月份的记录,我的所有fee_month都将存储为2017-04-01

1 个答案:

答案 0 :(得分:2)

您可以尝试直接比较date,例如:

SELECT DATE_FORMAT(fee_month, '%b-%Y') 
FROM bb_fee_info 
WHERE fee_month BETWEEN '2016-04-01' AND '2017-04-01';

如果您无法更改参数类型/格式,则可以使用date将其转换为STR_TO_DATE并进行比较,例如:

SELECT DATE_FORMAT(fee_month, '%b-%Y') 
FROM bb_fee_info 
WHERE fee_month BETWEEN STR_TO_DATE(CONCAT('01-', 'Apr-2016'),'%d-%M-%Y') AND STR_TO_DATE(CONCAT('01-', 'Apr-2017'),'%d-%M-%Y')