使用jpa将数据库中的日期与当前日期进行比较

时间:2013-01-15 08:33:14

标签: sql sql-server-2008 hibernate jpa hibernate-entitymanager

我使用JPA 1和hibernate作为提供者。我想比较实体的日期与当前日期(无论时间),我将该字段保存为时间戳(因为我需要它)。 当我通过以下代码使用oracle方言时,我得到了正确的结果:

select t from Task t where to_date(t.createdOn) = to_date(CURRENT_DATE)

但是当我切换到sql server(2008)时,它无法正常工作。我需要一种通用的方式,以便我可以使查询数据库独立。

1 个答案:

答案 0 :(得分:0)

这与您的oracle代码完全类似

SELECT * FROM Task t
WHERE CAST(t.createdOn as date) = cast(getdate() as date)

但我建议使用这个:

SELECT * FROM Task t
WHERE t.createdOn >= cast(getdate() as date)
      AND t.createdOn < DATEADD(d, 1, cast(getdate() as date))

修改

有关如何配置Hibernate以使用SQL SERVER 2008的详细信息,请参阅this