我使用Java创建了一个程序,该程序连接到数据库并允许用户提交记录。此记录包括唯一的参考编号和开始日期(变量:StartedDate)。
我希望用户能够搜索两个日期(当月的第一天和今天的日期)之间提交的案例数量。
到目前为止,我有SQL查询
select * from cases where StartDate>'***' and Date<'****'
在Java中,它将是
select * from cases where StartedDate>'1stMONTHDATE' and Date<'TODAYSDATE'
我的第一个问题是 - 在数据库中,没有一个名为“日期”的字段,因为这必须每天更改。我如何将其引用为Java自动生成的日期?
另外,我如何实现Count()方法返回返回的记录数的int?
答案 0 :(得分:3)
SELECT * FROM cases WHERE StartedDate BETWEEN :startDate AND :endDate
在JPQL中:
public List<Cases> findAllEvents(Date startDate, Date endDate) {
List<Cases> allCases = entityManager.createQuery("SELECT * FROM cases WHERE StartedDate BETWEEN :startDate AND :endDate")
.setParameter("startDate", startDate, TemporalType.DATE)
.setParameter("endDate", endDate, TemporalType.DATE)
.getResultList();
return allCases ;
}
答案 1 :(得分:0)
我认为查询中的“日期”是指结束日期。 如果是这样,您可以使用以下两种方法之一计算结束日期
,因为结束日期是从开始日期开始的一个月。这是特定于数据库的。这将在Postgres中有效。根据您用于获取结束日期的数据库查找正确的语法
select * from cases where StartedDate>'1stMONTHDATE' and ('StartedDate' + INTERVAL '1 MONTH')<'TODAYSDATE'.
关于count() - 一个简单的SELECT Count(*)
将为您提供查询返回的行数
答案 2 :(得分:0)
如果您使用MSSQL
且日期值为String
,则可以使用以下查询:
SELECT c FROM cases c where CONVERT(VARCHAR(10),StartDate,121) between :startDate AND :endDate
我在mssql server
的应用程序中使用此查询