好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Java查询时间段(startTime--endTime)间的数据方式

Java查询时间段的数据

问题1

判断时间间隔间的数据,就像查询数字一样通过between-and方法进行?

答1:

between-and用于查询数字区间,不用于查询两个时间间隔的内容。非要查询,可以试着把时间格式转换成Long型。

问题2

在用postman工具测试后,Java中报异常:(String类型和Date类型比较出现异常)?

异常信息:

### Error querying database.  Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String
### Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String

mybatis--xml

?

1

2

3

< if test = "startTime != null and startTime != ''" >

    AND create_time <![CDATA[>=]]> #{startTime}

</ if >

答2:

此处的String类型和Date类型比较异常原因:if标签中,Date类型不存在String类型,直接判断就好

?

1

2

3

< if test = "startTime != null" >

  AND create_time <![CDATA[>=]]> #{startTime}

</ if >

此时上述问题解决。

补充:

完整的时间区间比较代码

?

1

2

3

4

5

6

7

8

< where >

    < if test = "startTime != null" >

        AND create_time <![CDATA[>=]]> #{startTime}

    </ if >

    < if test = "endTime != null" >

        AND create_time <![CDATA[<=]]> #{endTime}

    </ if >

</ where >

实体类

?

1

2

3

4

5

6

7

8

//创建时间

    private Date createTime;

 

//起始时间

    private Date startTime;

 

//结束时间

    private Date endTime;

格式化时间startTime和endTime的时间差

格式化时间startTime和endTime的 时间差,当间隔超过一年时,显示年月日;

超过一天时,显示月日;

超过一小时时,显示多少小时前;

超过一分钟时,显示多少分钟前;

不超过一分钟,则显示为刚刚

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

/**

  * 格式化时间startTime和endTime的 时间差,用于朋友圈等地方显示发布时间。例如[45分前]等

  * @param endTime :发布时间

  * @return 格式化的时间显示字符

  */

public static String getFriendlyTime(Date startTime, Date endTime) {

     long betweenTime = (endTime.getTime() - startTime.getTime()) / 1000 ;

     if (betweenTime < 0 ) {

         return DateTimeUtils.convertDate2String(startTime, "yyyy年MM月dd日" );

     }

     if (betweenTime / ( 60 * 60 * 24 * 365 ) > 0 ) {

         //大于1年

         return DateTimeUtils.convertDate2String(startTime, "yyyy年MM月dd日" );

     }

     if (betweenTime / ( 60 * 60 * 24 ) > 0 ) {

         //大于一天

         return DateTimeUtils.convertDate2String(startTime, "MM月dd日" );

     }

     if (betweenTime / ( 60 * 60 ) > 0 ) {

         //大于1小时

         return betweenTime / ( 60 * 60 ) + "小时前" ;

     }

     if (betweenTime / ( 60 ) > 0 ) {

         //大于一分钟

         return betweenTime / ( 60 ) + "分钟前" ;

     }

     //小于一分钟

     return "刚刚" ;

}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

原文链接:https://blog.csdn.net/qq_37335810/article/details/83548011

查看更多关于Java查询时间段(startTime--endTime)间的数据方式的详细内容...

  阅读:33次