記一次Oracle時間格式遇到的坑
當Oracle中的字段類型為date,入庫時間為 yyyy-mm-dd 00:00:00 時,Oracle存儲的記錄為 yyyy-mm-dd
在根據對應時間查詢該資料的時候,在資料庫查詢正常,資料可以查詢到:
在Java代碼執行該查詢時,沒有 時分秒的資料查詢不出來(具體原因未知,有知道原因的大佬麻煩給指點指點,小子給您抱拳了!)
猜測1:在Java代碼擷取時間時(拼接年月日時分秒),時間毫秒數是 > 當日 00:00:00 的毫秒數:
開始時間毫秒:1615910400494
需要查詢的時間:2021-03-17
當日年月日轉毫秒:1615910400000
驗證:代碼将擷取到的時間取其年月日,轉為淩晨毫秒數,再将該毫秒數作為入參(為啥轉來轉去的是因為代碼擷取到的時間不一定是哪一天,是以直接取擷取到的年月日轉來轉去是最友善的)
在将該毫秒數作為入參傳入後,還是查詢不到該資料(yyyy-mm-dd 沒有時分秒的資料 <括弧>哔了G了</括弧>)!
解決方案:簡單暴力 +1s
/**
* 當時間(xxxxx.getReqDate())為當天 00:00:00 時,入庫資料隻有 年月日(yyyy-mm-dd)
* <p>導緻查詢的時候查不到該資料,當有該記錄</p>
* 故而 在時間為 00:00:00 時 +1s 。
* 加一秒不會出現問題:當時間為00:00:00時,必然是當日時間(即 日期不會變),+1s 沒有實際影響
*/
// xxxxx.getReqDate() 格式為:20200101000000
String requestTime = xxxxx.getReqDate();
if (requestTime.endsWith("000000")) {
requestTime = String.valueOf(Long.parseLong(requestTime) + 1);
}
xxxxx.setRequestTime(currentDate);
問題解決