我使用JPA 1和hibernate作为提供者。我想比较实体的日期与当前日期(无论时间),我将该字段保存为时间戳(因为我需要它)。 当我通过以下代码使用oracle方言时,我得到了正确的结果:
select t from Task t where to_date(t.createdOn) = to_date(CURRENT_DATE)
但是当我切换到sql server(2008)时,它无法正常工作。我需要一种通用的方式,以便我可以使查询数据库独立。
答案 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