ORACLE中DATE格式遇到的坑,根据时间查询不到时间只有年月日的数据

记一次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);

问题解决

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值