SQL本机查询以获取日期在X中到期的对象列表

Posted

技术标签:

【中文标题】SQL本机查询以获取日期在X中到期的对象列表【英文标题】:SQL native query to get a list of objects where date expiring in X 【发布时间】:2021-12-27 11:52:29 【问题描述】:

我有一些“卡片”对象:

@Entity
@Table(name = "card", schema = "public")
@Data
@EqualsAndHashCode(callSuper = false)
public class Card  
    @Id
    @GeneratedValue
    private Long id;
    
    @Column(name="name")
    private String name;

    @Column(name="scope_time_limit")
    private LocalDateTime expireDate;

我想准备一些本地查询,我可以根据我指定的日期获取过期卡列表。我有这个方法:

 List<Card> getExpiringCards(Integer numberOfDaysToExpiringCard) 
        return cardRepository.getExpiringCardsByDay(numberOfDaysToExpiringAgreement);
    

什么是最佳查询?我在考虑原生查询。

提前致谢。

【问题讨论】:

minimal reproducible example 是询问 SQL 问题的良好开端。 【参考方案1】:

您缺少一些关于您使用什么以及如何访问您的数据库等的详细信息。但是,我想展示一个使用 Spring Data 的示例,只是为了粗略的想法。

您的存储库:

public interface CardRepository extends JpaRepository<Card, Integer> 
   List<Card> findByExpireDateAfter(LocalDateTime expireDate);

在您服务的某处或您使用它的任何地方:

  @Autowired
  CardRepository cardRepository;  

  List<Card> getCardsWillBeExpiredInDays(int days) 
    LocalDateTime someDaysLater = LocalDateTime.now().plusDays(days);
    return cardRepository.findByCreatedAfter(someDaysLater);
  

【讨论】:

以上是关于SQL本机查询以获取日期在X中到期的对象列表的主要内容,如果未能解决你的问题,请参考以下文章

SQL语句自动获取本机日期时间

如何通过在spring数据本机查询或存储库中传递userIds列表来获取用户的最大日期时间戳

如何使用查询获取两个给定日期之间的月份列表?

在 SQL Server 2008 中计算到期日期

sql 获取SQL Server许可证到期日期

SQL 查询 - 多个日期范围