java - criteriaBuilder.greaterThanOrEqualTo 比较没有时间的日期
问题描述
我正在与criteriabuilder
. 我想从数据库中提取日期在给定日期之后的所有行,而不考虑时间给定的日期 dateCreation 没有时间,例如2020-10-10
格式为“日期”的“”。数据库中的日期为timestamp
. Join5 是表之间的连接。
我的原始代码是:
Predicate predicateDate = criteriaBuilder.greaterThanOrEqualTo(join5.get("dateEvenement"), dateCreation);
如果dateCreation
是20210906
,此代码部分工作,但不返回行 where dateEvenement
is2021-09-06 10:11:45.014
我尝试转换SimpleDateFormat
yyyy-mm-dd
但criteriaBuilder.greaterThanOrEqualTo
不适用于字符串。
我可能只需要没有时间的日期获取(“dateEvenement”),但我不知道该怎么做。
谢谢你的帮助。问候
解决方案
日期时间类的部分概述:
Date date = ...; // Old
LocalDate localDate = ...; // Days
LocalDateTime localDateTime = ...;
ZonedDateTime zonedDateTime = ...; // Human use of date & time.
得到
localDate = LocalDate.parse(creationDate, DateTimeFormatter.ofPattern("yyyyMMdd"));
localDateTime = localDate.atStartOfDay();
criteriaBuilder.greaterThanOrEqualTo(join5.get("dateEvenement"), localDateTime);
对于一天结束:
localDateTime = localDate.plusDays(1).atStartOfDay();
criteriaBuilder.lessThan(join5.get("dateEvenement"), localDateTime);
应该知道 ZonedDateTime,例如 23 和 25 小时,以及不同的时区。取决于您在持久数据中存储的内容。
推荐阅读
- html - VueJS - 调用多个图像 src 作为自定义道具
- python - 假设总是返回最小值
- php - 从作为对象元素的数组中删除元素
- docker - 使用 docker-compose 进行 Vue.js 本地开发
- c# - 在 C# 中与 Google Admin SDK 集成
- javascript - ExpressJS 是否遵循 MVC 模式?
- nosql - 如何在 ArangoDB 中存储位置?
- node.js - 输入验证失败时如何防止 Multer 文件上传
- javadoc - Javadoc:“继承自的方法”和“声明的方法”之间的区别
- jquery - 使用 Jquery 将 div 的内容移动到具有匹配数据属性值的另一个 div