java - 在 hibernate 查询中给出条件以获取开始日期为上个月日期的值,即当前月份减 1

标签 java hibernate

在 hibernate 查询中给出条件以获取开始日期为上个月日期的值,即当前月份减 1。

我在数据库中有一个包含日期字段的表。 我想编写一个 hibernate 查询,其中我将从该表中获取其日期在以下范围内的值:- 当前日期到 30 天减去当前日期。

这是查询.. 从 PaymentInSlipDO pis、InwardDO inw、InwardPaySlipMapDO map 中选择任何内容,其中 map.inwardSeq = inw.id
和map.parentGuidObj = pis.id 和 pis.paySlipStatus<>'已取消' 和 pis.paySlipDt<= (这就是我被困的地方)

最佳答案

显然,减去 30 天并不是执行此操作的正确方法,因为您最终可能会得到同一个月(如果您是当月 31 日)或最终会回退两个月(如果日期是3 月 1 日,因为 2 月只有 28 天)。

最好的解决方案是使用 DATEADDADDDATE函数,因为它可以使用特定的日期单位,如分钟、小时、天、月、年等。只需使用减号而不是加号即可向后移动。大多数数据库都有 DATEADD 函数,但它们的参数可能会有所不同,因此请检查您的文档。

另一个选项是使用DATEPART函数获取月份部分并将其解析为整数,然后根据需要进行比较。再次强调,不要只减去一个月,否则明年一月就会出现问题!

关于java - 在 hibernate 查询中给出条件以获取开始日期为上个月日期的值,即当前月份减 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5701725/

相关文章:

java - 使用java日历获取一年中的一周,星期日作为一周的第一天

java - 对象引用未保存的 transient 实例 - 在刷新 hibernate JPA 之前保存 transient 实例

java - 将公共(public)构造函数添加到 JPA 字段注释的 POJO

java - 为什么 Jalopy 以这种方式格式化我的 Java 代码?

java - 如何在模态面板中添加滚动?

java - 如何在 jsr352 中配置可重试/可跳过的异常

java - 配置的 Hibernate ClassNotFoundException

java - 是否可以使用 JPA/Hibernate(最好是 JPA)将数据库表列中的逻辑 OR 值映射到对象列表中?

java - 关于 JtaTransactionManager 的问题

java - 将字符串转换为 uint8_t 数组