记一次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);
问题解决