2012-10-15 69 views
1

我有以下方法:CF ORM ormExecuteQuery(),日期应该是什么格式?

public function listPublished(){ 
     var today = createODBCDate(now()); 
     return ormExecuteQuery("FROM Employment WHERE publishdate <= #today# and expirydate >= #today# ORDER BY tstamp desc"); 
} 

当我运行它,我收到以下错误:

org.hibernate.QueryException: unexpected char: '{' [FROM EmploymentFindSonographer WHERE publishdate <= {d '2012-10-15'} and expirydate >= {d '2012-10-15'} ORDER BY tstamp desc] 

我的猜测是,HQL需要比ODBC日期以外的某种格式?我也尝试传入一个标准的CF日期,但同样的错误。

任何人都可以告诉我在将HQL传递到ormExecuteQuery时,我的日期应该是什么格式?

非常感谢

回答

2

Simpe版本:

ormExecuteQuery("FROM Employment WHERE publishdate <= :today and expirydate >= :today ORDER BY tstamp desc", {today = Now()}); 

可能出现的问题是,现在()输出秒,这可以给你带来意想不到的结果,如果publishDate和expiryDate保持日期+时间。

因此,可能更准确的方法是这样的:

ormExecuteQuery("FROM Employment WHERE publishdate <= :today and expirydate >= :today ORDER BY tstamp desc", {today = DateFormat(Now(), 'yyyy-mm-dd')}); 
+0

那完美。感谢Sergii。 – Jason

1

尝试

DateFormat(Now(), "yyyy-mm-dd")