有一个时间戳字段ordered_ts
映射到一个类。我需要获取实例
1)(ordered_ts
为空)或
2)(ordered_ts
<> current_date)
这是我尝试过的。这是HQL
语法(非特定于数据库)
SELECT . . .
WHERE (CAST(coalesce(t.ordered_ts, TO_TIMESTAMP('2000-01-01 00:00:00',
'YYYY-MM-DD HH24:MI:SS')) as DATE) <> CURRENT_DATE)
但它会抛出
java.lang.NullPointerException
at org.hibernate.dialect.function.CastFunction.render(CastFunction
(PS底层数据库是mysql
。但我正在寻找HQL
查询)
答案 0 :(得分:1)
对于SQL
SELECT . . .
WHERE (FROM_UNIXTIME(coalesce(t.ordered_ts, TO_TIMESTAMP('2000-01-01 00:00:00',
'YYYY-MM-DD HH24:MI:SS')) as DATE) <> CURRENT_DATE)
适用于HQL
在查询中使用之前,您应该将字段ordered_ts
转换为日期。
见下面的例子:
Date ordered_ts_date= new Date(ordered_ts.getTime());
然后
SELECT . . . WHERE ordered_ts_date <> CURRENT_DATE)