sql查询表中指定月份的数据
要求:查询出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<BuyingBriefDetail> 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");
上一篇:
通过多线程提高代码的执行效率例子