需求:按年月查询数据,返回有数据的日期
源数据格式:“2021-7”
输出数据格式:“1”、“10”
用Like
-- 无法匹配到数据
select date_format(orderDate , '%e') orderDate
from t_ordersetting
where orderDate like '2021-7-%'
-- 这种方式可以匹配到数据
-- %Y表示四位长度的年份格式
-- %c表示一位或两位变长的月份格式
-- %e表示一位或两位变长的日期格式
select date_format(orderDate , '%e') orderDate
from t_ordersetting
where date_format(orderDate , '%Y-%c-%e') like '2021-7-%'
用Between And
-- 除了输出的数据格式要改,其他的不用改
select date_format(orderDate , '%e') orderDate
from t_ordersetting
where orderDate between '2021-7-1' and '2021-7-31';
总结:like实际用于字符串匹配,在匹配日期时,也是将日期转为字符串后再进行的匹配,like后的值实际为字符串,Between And对范围进行匹配,即对日期范围匹配,Between And 的数据仍保持原数据格式,所以上面的between and 中的数据写 ‘2021-7-1’、‘2021-07-1’、'2021-07-01’都能查出数据.