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

<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 "剛剛";
}

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: