JAVA笔记 | 获取今日,本周,本月开始结束时间(年月日 时分秒)+SQL中的时间条件查询

本文介绍了如何使用Java的Calendar类和LocalDateTime获取当前、本周和本月的开始及结束时间,并展示了在SQL查询中如何处理时间条件,包括将日期转换为字符串进行比较以及处理Instant和Date类型的查询条件。示例代码涵盖了PostgreSQL数据库的时间查询语法。
摘要由CSDN通过智能技术生成

获取今日,本周,本月开始结束时间

通常当作sql的查询时间使用

通过Calendar类可以获取当天/本周/本月始末日期后,通过拼接,获取具体的时间

        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(System.currentTimeMillis());
        //获取当天时间 年月日 时分秒
        calendar.add(Calendar.DATE, 0);
        String today = dateFormat.format(calendar.getTime());
        System.out.println(today + " 00:00:00");
        System.out.println(today + " 23:59:59");

        //设置周一为一周的开始
        calendar.setFirstDayOfWeek(Calendar.MONDAY);
        calendar.setTimeInMillis(System.currentTimeMillis());
        calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        String monday = dateFormat.format(calendar.getTime()) + " 00:00:00";
        calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
        String sunday = dateFormat.format(calendar.getTime()) + " 24:00:00";
        System.out.println(monday);
        System.out.println(sunday);

        //获取当月的开始时间 结束时间
        calendar.add(Calendar.MONTH, 0);
        calendar.set(Calendar.DAY_OF_MONTH, 1);
        String firstDayOfMonth = dateFormat.format(calendar.getTime()) + " 00:00:00";
        calendar.add(Calendar.MONTH, 1);
        calendar.set(Calendar.DAY_OF_MONTH, 0);
        String lastDayOfMonth = dateFormat.format(calendar.getTime()) + " 24:00:00";
        System.out.println(firstDayOfMonth);
        System.out.println(lastDayOfMonth);

        //LocalDateTime与String的转换
        LocalDateTime localDateTime = LocalDateTime.now();
        String time =  DateTimeFormatter.ofPattern("yyyy-MM-dd").format(localDateTime);
        System.out.println("test: " + time);

SQL中的时间条件查询

postgresql数据库中时间属性类型为timestamp

当条件时间为String

将时间转换为字符串后,进行比较

例子1

 where
     to_char(created_date,'yyyy-MM-dd HH24:MI:ss') <![CDATA[>=]]>  #{startDate}
     and
     to_char(created_date,'yyyy-MM-dd HH24:MI:ss')<![CDATA[<=]]> #{endDate}

 例子2

<if test="dto.startDate != null and dto.startDate != ''">
    AND to_char(bo.order_time, 'yyyy-MM-dd') <![CDATA[>=]]> #{dto.startDate}
</if>
<if test="dto.endDate != null and dto.endDate != ''">
    AND to_char(bo.order_time, 'yyyy-MM-dd') <![CDATA[<=]]> #{dto.endDate}
</if>

当条件时间为Instant或者Date类型

<if test="dto.startTime != null">
    AND  <![CDATA[  a.order_time > #{dto.startTime} ]]>
</if>
<if test="dto.endTime != null">
    AND  <![CDATA[  a.order_time < #{dto.endTime} ]]>
</if>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值