目录
2. sql语句 :TIMESTAMPDIFF()的 方法 使用
查询当前时间的30分钟之前(过期30分钟)和60分钟后(快到期60分钟)
获取 开始时间-> 结束时间
一个月, 一年 都需要计算
- queryWapper.ge(timeStatus, "update_date", appointEntity.getStartTime())//大于开始时间
- .le(timeStatus, "update_date", appointEntity.getEndTime())//小于等于结束时间
- select id from 表
- where (TIMESTAMPDIFF(MINUTE, #{nowTime}, ap_time) >0 and TIMESTAMPDIFF(MINUTE, #{nowTime}, ap_time) <= 60 )
- or
- (TIMESTAMPDIFF(MINUTE, ap_time, #{nowTime})>0 and TIMESTAMPDIFF(MINUTE, ap_time, #{nowTime}) <30)
- package com.aisce.common.enums;
-
- public enum DataTimeTypeEnum {
-
- /**
- * 近一周
- */
- ONE_WEEK(1, "近一周"),
- /**
- * 近一个月
- */
- ONE_MONTH(2, "近一个月"),
- /**
- * 近三个月
- */
- THREE_MONTH(3, "近三个月"),
- /**
- * 近一年
- */
- ONE_YEAR(4, "近一年"),
- /**
- * 所有
- */
- ALL(5, "所有"),
- /**
- * 自定义
- */
- CUSTOMIZE(6, "自定义")
- ;
- private final int code;
- private final String name;
-
- DataTimeTypeEnum(int code, String info) {
- this.code = code;
- this.name = info;
- }
-
- public static String getValue(int code) {
- DataTimeTypeEnum[] enums = values();
- for (DataTimeTypeEnum item : enums) {
- if (item.code == code) {
- return item.getName();
- }
- }
- return null;
- }
-
- public int getCode() {
- return code;
- }
-
- public String getName() {
- return name;
- }
- }
- /**
- * 时间类型
- */
- @TableField(exist = false )
- private Integer TimeType ;
- /**
- * 开始时间
- */
- @TableField(exist = false )
- private Date startTime;
-
- /**
- * 结束时间
- */
- @TableField(exist = false )
- private Date endTime;
- /**
- * lambdaQuery 终极写法 时间规划
- * @param dto
- * @param <T>
- * @return
- */
- private <T extends AixiBillRecord> LambdaQueryWrapper<T> buildQueryWrapper(DataBaseDTO dto){
- Integer timeType = dto.getTimeType();
- // Integer timeType = 3;
- Date currentDate = new Date();
- LambdaQueryWrapper<T> lqw = Wrappers.lambdaQuery();
- lqw.ge(timeType == DataTimeTypeEnum.ONE_WEEK.getCode(), T::getCreateTime, DateUtil.offsetWeek(currentDate, -1));
- lqw.ge(timeType == DataTimeTypeEnum.ONE_MONTH.getCode(), T::getCreateTime, DateUtil.offsetMonth(currentDate, -1));
- lqw.ge(timeType == DataTimeTypeEnum.THREE_MONTH.getCode(), T::getCreateTime, DateUtil.offsetMonth(currentDate, -3));
- lqw.ge(timeType == DataTimeTypeEnum.ONE_YEAR.getCode(), T::getCreateTime, DateUtil.offsetMonth(currentDate, -12));
- lqw.ge(timeType == DataTimeTypeEnum.CUSTOMIZE.getCode(), T::getCreateTime, dto.getStartTime());
- lqw.le(timeType == DataTimeTypeEnum.CUSTOMIZE.getCode(), T::getCreateTime, dto.getEndTime());
- return lqw;
- }
(可能有更好的使用方式 寻找中)
- DataBaseDTO dto = new DataBaseDTO();
- dto.setTimeType(1);
-
- LambdaQueryWrapper<*> LambdaQueryWrapper = buildQueryWrapper(dto);
- LambdaQueryWrapper.eq(*::getCompanyId,user.getCompanyId());
-
- //先获取全部数据
- List<*> RecordList = baseMapper.selectList(LambdaQueryWrapper);