关于LocalDate格式数据查询问题

1、引申:
前端如果传年月日必须使用LocalDate接收 ,添加:@JsonFormat(pattern = “yyyy-MM-dd”,timezone=“GMT+8”) 注解。
前端如果传年月日时分秒必须使用LocalDateTime接收 ,添加:@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”,timezone=“GMT+8”)注解。
2、问题:
由于MySQL数据库的时间默认格式是yyyy-MM-dd HH:mm:ss,带有时分秒,如果前端传年月日(yyyy-MM-dd) 格式就查询不到 开始时间和结束时间为同一天的数据。
3、解决方案:
方案一:将数据库格式转为yyyy-MM-dd
DTO使用String类型来接受前端的时间参数,DO、VO使用时间类型和数据库对应

DATE_FORMAT(start_time,'%Y-%m-%d') >= 开始时间 and DATE_FORMAT(end_time,'%Y-%m-%d') <= 结束时间

方案二:将时间参数格式转为yyyy-MM-dd HH:mm:ss

/**
 * @author lijin
 * @version 1.0
 * @date 2022/10/24 15:26
 *
 * 解决前端传localDate 格式数据,开始时间和结束时间同一天查询不到数据问题
 */
public class TimeConvertUtils {
    public static LocalDateTime startTimeConvert(LocalDate localDate){
        if (ObjectUtil.isNotEmpty(localDate)){
            LocalTime suffix = LocalTime.of(00, 00, 00);
            return LocalDateTime.of(localDate, suffix);
        }
        return null;
    }
    public static LocalDateTime endTimeConvert(LocalDate localDate){
        if (ObjectUtil.isNotEmpty(localDate)){
            LocalTime suffix = LocalTime.of(23, 59, 59);
            return  LocalDateTime.of(localDate, suffix);
        }
        return null;
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值