参考文章:https://www.cnblogs.com/jr-xiaojian/p/12327859.html
要求:查询出emp表中1981年2月份入职的员工
常用的两种方式:
1.YEAR查询年,MONTH查询月
SELECT * FROM emp WHERE YEAR(HIREDATE)='1981' AND MONTH(HIREDATE)='2'
2.date_format (使用更多)
SELECT * FROM emp WHERE DATE_FORMAT(hiredate,'%Y-%m') = '1981-02'
第二种方式,需要注意的是日期格式一定要正确
例如:
DATE_FORMAT(hiredate,'%Y-%m') = '1981-2'
是无法查询到数据的,因为 %m 对应的月份格式就是: 01,02,03...12.
如果换成
DATE_FORMAT(hiredate,'%Y-%c') = '1981-2'
就能查询到数据。
** MySQL 日期格式
%Y 代表四位年份
%y 代表两位年份
%m 代表月格式(01,02,03...12)
%c 代表月格式(1,2,3...12)
%d 代表日 %H 代表24小时制
%h 代表12小时制
%i 代表分钟(00,-01,02...59)
%S或%s 代表秒(00,01,02...59)
实践应用
SELECT
id,
bbid,
plan_data_id,
plan_name,
start_date,
end_date,
market,
copy,
gross_budget,
net_budget,
reach_goal,
imp_goal,
impression_consumed,
click_goal,
click_consumed,
STATUS,
batch_no,
cpm,
created_time,
created_by,
updated_time,
updated_by
FROM
bg_buying_brief_detail
WHERE
(
bbid = 'DOW2188210655'
AND market = 'BENGBU'
AND copy = 'COPY-1'
AND STATUS >= 0
AND DATE_FORMAT(start_date,'%Y-%m') = '2021-08'
)
ORDER BY
created_time DESC
结果
Java 代码
wrapper.apply("date_format(create_time,'%Y-%m-%d') = {0}", "2019-02-14")
实践应用
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("bbid", BBid).eq("market", market).eq("copy", copy)
.ge("status", Byte.valueOf("0")).apply("DATE_FORMAT(start_date,'%Y-%m') = {0}", startDate).orderByDesc("created_time");