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