这是我的代码:
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
。
答案 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')