首頁 > 軟體

Java查詢時間段(startTime--endTime)間的資料方式

2022-03-02 19:02:14

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

<if test="startTime != null and startTime != ''">
   AND create_time <![CDATA[>=]]> #{startTime}
</if>

答2:

此處的String型別和Date型別比較異常原因:if標籤中,Date型別不存在String型別,直接判斷就好

<if test="startTime != null">
 AND create_time <![CDATA[>=]]> #{startTime}
</if>

此時上述問題解決。

補充:

完整的時間區間比較程式碼

<where>
   <if test="startTime != null">
       AND create_time <![CDATA[>=]]> #{startTime}
   </if>
   <if test="endTime != null">
       AND create_time <![CDATA[<=]]>#{endTime}
   </if>
</where>

實體類

//建立時間
    private Date createTime;
 
//起始時間
    private Date startTime;
 
//結束時間
    private Date endTime;

格式化時間startTime和endTime的時間差

格式化時間startTime和endTime的 時間差,當間隔超過一年時,顯示年月日;

超過一天時,顯示月日;

超過一小時時,顯示多少小時前;

超過一分鐘時,顯示多少分鐘前;

不超過一分鐘,則顯示為剛剛

/**
 * 格式化時間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 "剛剛";
}

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com