如何在HQL/Grails中将年月日转换为日期



此查询在数据库中工作

select to_date(a.year || a.month, 'YYYYMM') as dates from table a

但没有以HQL的身份在Grails工作。将错误作为"意外令牌"。如何在HQL/Grails中使用此查询?

作为例子,我有month&year列。我需要在新列中将其显示为date

上面的to_date(a.year || a.month, 'YYYYMM') as dates在oracle数据库中运行良好,但在我用作的grails中的HQL中不起作用

executeQuery("select to_date(a.year || a.month, 'YYYYMM') as dates from table a"),但这个不工作

HQL只有在对数据库表建模的情况下才是好的。如果您真的想使用这个精确的查询,请选择本机SQL而不是HQL:

MyController {
Sql groovySql // package: groovy.sql
def myAction() {
def results = groovySql.rows("SELECT 'thisIsNativeSqlQuery'");
// do something with your results;
}
}

如果你已经对这个表进行了建模(有Domain类(,你可以用YourDomain.list()获取它们,并制作一个getter方法,根据你的格式形成你的日期:

Date toDate() {
​    return Date.parse("yyyyMM", "201808")​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​
}

或者有一个为你做这件事的瞬态字段,这完全取决于你的用例

最新更新