mybatis按时间查询

大数据接口中按日期查询sql

  • 测试数据
    学生成绩表 ,测试数据自己添加
CREATE TABLE `subject_mark` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `stud_id` int(10) DEFAULT NULL COMMENT '学生id',
  `subject_code` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '科目',
  `subject_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '科目',
  `mark` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '成绩',
  `insert_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  • 查询当天,昨天,近7天,近30天数据
<if test='map.timeType != null and map.timeType =="today"'>
     and TO_DAYS(insert_time) = TO_DAYS(NOW())
</if>
<if test='map.timeType != null and map.timeType =="yesterday"'>
      and  TO_DAYS(insert_time) = TO_DAYS(DATE_SUB(NOW(),INTERVAL 1 DAY))
</if>
<if test='map.timeType != null and map.timeType =="sevenDay"'>
      and TO_DAYS(insert_time) >= TO_DAYS(DATE_SUB(NOW(),INTERVAL 7 DAY))
</if>
<if test='map.timeType != null and map.timeType =="fifteenDay"'>
    and TO_DAYS(insert_time) >= TO_DAYS(DATE_SUB(NOW(),INTERVAL 15 DAY))
</if>
  • 近7天每天的数据
SELECT
	d.date,
	ifnull( s.num, 0 ) AS price 
FROM
	(
SELECT
	CURDATE( ) AS date UNION ALL
SELECT
	DATE_SUB( CURDATE( ), INTERVAL 1 DAY ) AS date UNION ALL
SELECT
	DATE_SUB( CURDATE( ), INTERVAL 2 DAY ) AS date UNION ALL
SELECT
	DATE_SUB( CURDATE( ), INTERVAL 3 DAY ) AS date UNION ALL
SELECT
	DATE_SUB( CURDATE( ), INTERVAL 4 DAY ) AS date UNION ALL
SELECT
	DATE_SUB( CURDATE( ), INTERVAL 5 DAY ) AS date UNION ALL
SELECT
	DATE_SUB( CURDATE( ), INTERVAL 6 DAY ) AS date 
	) d
	LEFT JOIN (
SELECT LEFT
	( insert_time, 10 ) AS insert_time,
	count( 1 ) AS num
FROM
	subject_mark AS o 
WHERE
	1 = 1 
GROUP BY
	DATE_FORMAT( insert_time, '%Y-%m-%d' ) 
	) AS s ON d.date = s.insert_time 
ORDER BY
	d.date DESC
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值