0

我创建了一个使用 Java 连接到数据库并允许用户提交记录的程序。该记录包括唯一的参考编号和开始日期(变量:StartedDate)。

我想让用户搜索两个日期(当月的第一天和今天的日期)之间提交的案例数量。

到目前为止,我有 SQL 查询

select * from cases where StartDate>'***' and Date<'****'

在 Java 中,这将是

select * from cases where StartedDate>'1stMONTHDATE' and Date<'TODAYSDATE'

我的第一个问题是 - 在数据库中,没有一个名为“日期”的字段,因为它必须每天更改。我如何将其引用为 Java 自动生成的日期?

另外,我将如何实现 Count() 方法以返回返回的记录数的 int?

4

3 回答 3

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 ;  
    }
于 2013-10-07T09:45:25.053 回答
0

如果您正在使用MSSQL并且您的日期值是 asString那么您可以使用以下查询:

SELECT c FROM cases c where CONVERT(VARCHAR(10),StartDate,121) between :startDate AND :endDate 

我在我的应用程序中使用这个查询与 mssql 服务器

于 2013-10-07T09:57:33.970 回答
0

好吧,我想查询中的“日期”是指结束日期。如果是这样,您可以使用以下两种方法之一计算结束日期

  1. java使用日历类并将结束日期作为参数传递给查询
  2. 在sql中通过修改查询如

例如,结束日期是从开始日期开始的一个月。这是特定于数据库的。这将在 Postgres 中工作。根据用于获取结束日期的数据库查找正确的语法

select * from cases where StartedDate>'1stMONTHDATE' and ('StartedDate' + INTERVAL '1 MONTH')<'TODAYSDATE'.

关于 count() - 一个简单的SELECT Count(*)将为您提供 thw 查询返回的行数

于 2013-10-07T09:54:16.620 回答