JAVA:日期时间范围查询0点到23点59分59秒之间

问题

在做日期时间范围查询时,需要查询当天时间范围内的数据,如2021-01-05这天的所有记录,

查询时间范围应该是“2021-01-05 00:00:00”至“2021-01-05 23:59:59”之间的数据,若数据库日期格式是timestamp则需要更精确到毫秒,如“2021-01-05 23:59:59.254”。

此时已经不适用add_time>=“2021-01-05 00:00:00” and add_time<=“2021-01-05 23:59:59”的where查询条件了,而且组合起来也有点麻烦。

我们用add_time>=“2021-01-05” and add_time<“2021-01-06” 这样查询更科学,后面不需要带时间,系统或默认从当天最小时间开始。

解决方案

String add_timeA='2021-01-05' ;//起始时间 若传入日期时间格式 '2021-01-05 10:02:11' 也会被转换成yyyy-MM-dd格式

String A_new=Comm.getDateYMDstr(add_timeA);//输出为 '2021-01-05'

String add_timeB='2021-01-05' ;//截止时间

//自增一天,输出为 '2021-01-06'

String B_new=Comm.getDateYMDaddDays(Comm.getDate(add_timeB),1);

//传入到sql语句中使用 注意后面的截止时间要用小于号

//select * from 表 where add_time>=A_new and add_time<B_new

//即 select * from 表 where add_time>='2021-01-05' and add_time<'2021-01-06'

以上使用到的公用方法如下:

// 转换为yyyyMMdd日期格式字符串
public static String getDateYMDstr(String dateStr) {
    try {
        return getDateYMD(DateFormat.getDateInstance().parse(dateStr));
    } catch (ParseException e) {
        e.printStackTrace();
        return "";
    }
}
//String转为Date yyyy-MM-dd格式
public static Date getDate(String dateStr) {
    SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
    Date dt = null;
    try {
        dt = sf.parse(dateStr);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return dt;
}
// 日期加减天数
public static String getDateYMDaddDays(Date date, Integer days) {
    try {
        Calendar c = Calendar.getInstance();
        c.setTime(date); // 设置当前日期
        c.add(Calendar.DATE, days); // 日期加1天
        date = c.getTime();
        return new SimpleDateFormat("yyyyMMdd").format(c.getTime());
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

手记:

//起始日期
String add_timeA= Comm.getString(map.get("add_timeA"));
if(!Comm.IsNullOrEmpty(add_timeA)){
    map.put("add_time_MoreEqual",Comm.getDateYMDstr(add_timeA));
}
//截止日期
String add_timeB= Comm.getString(map.get("add_timeB"));
if(!Comm.IsNullOrEmpty(add_timeB)){
    map.put("add_time_Less",Comm.getDateYMDaddDays(Comm.getDate(add_timeB),1));
}

猜你喜欢

转载自blog.csdn.net/quan278905570/article/details/119007037