获取 本周 , 本月 , 本年 截取时间 时间查询

获取时间的年月日
DATE_FORMAT(“时间字段”,’%Y-%m-%d’)
DATE_FORMAT(" 2020-11-07 16:26:09",'%Y-%m-%d') ==========> 2020-11-07

统计本周 本年 本月 某天的数据信息

COUNT(IF (TO_DAYS(时间字段) - TO_DAYS(时间字段) <= 0,1,NULL))
TO_DAYS ----本天的数据

COUNT(IF (TO_DAYS(read_time) - TO_DAYS(end_time) <= 0,1,NULL)) 统计 实际时间小于预期时间的数量

SELECT  COUNT(IF (TO_DAYS(d.real_end_time) - TO_DAYS(d.end_time) &lt;= 0,1,NULL))   ,
                COUNT(IF (TO_DAYS(d.real_end_time) - TO_DAYS(d.end_time) >0,1,NULL) ) ,
                dma.create_time
FROM  work    w    LEFT JOIN de   d ON d.id = w.de_id`

<where> AND  w.delete_flag = 1
                AND  w.operator_id = #{userId}
            <if test="time != null and time != '' ">
                AND ${time}(d.create_time) = ${time}(NOW())
            </if>
            <if test="startTime != null and endTime != null">
                AND d.create_time BETWEEN #{startTime} AND #{endTime}
            </if>
        </where>
        GROUP BY DATE_FORMAT(d.create_time,'%Y-%m-%d')
      

解析AND ${time}(d.create_time) = ${time}(NOW()) time 灵活配置 WEEK 本周 ,MONTH 本月 ,YEAR 本年 切记 这里的time参数不能用 #号接收 要用$接收 否则会报错
实例AND WEEK (d.create_time) = WEEK (NOW()) d.create_time 时间字段 NOW()当前时间
#{}:传入的内容会被作为字符串,被加上引号,以预编译的方式传入,安全性高,可以防止sql注入。
${}:传入的内容会直接拼接,不会加上引号,可能存在sql注入的安全隐患。

AND d.create_time BETWEEN #{startTime} AND #{endTime} 根据时间段查询 startTime开始时间 endTime结束时间 这里时间类行是date

GROUP BY DATE_FORMAT(d.create_time,'%Y-%m-%d') 根据时间日期分组 年月日

//今天
DATE_FORMAT(create_time,'%Y-%m-%d') = DATE_FORMAT(NOW(),'%Y-%m-%d')

//昨天
DATE_SUB(CURDATE(), INTERVAL 1 DAY) = DATE(DATE_FORMAT(create_time,'%Y-%m-%d'))

//今年
DATE_FORMAT(create_time,'%Y') = DATE_FORMAT(NOW(),'%Y')AND YEAR(create_time) = YEAR(NOW())
 
//上年
DATE_FORMAT(create_time,'%Y') = DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 YEAR),'%Y') 

//本月
DATE_FORMAT(create_time,'%Y-%m') = DATE_FORMAT(NOW(),'%Y-%m')AND MONTH(create_time) = MONTH(NOW())

//上月
DATE_FORMAT(create_time,'%Y-%m') = DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH),'%Y-%m') 

//本周 
AND WEEK(create_time) = WEEK(NOW())
//上周
YEARWEEK(
	date_format( create_time, '%Y-%m-%d' )) = YEARWEEK(
	now())- 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值