2011-03-17 92 views
4

有没有什么办法从HQL的日期中提取年份(1-366)?是唯一选择扩展我需要的方言并明确注册功能吗?我发现HSQL和DB2方言有一天的注册,但没有与Oracle或SQL Server的运气...HQL中的一年中的哪一天?

据我所知,唯一的标准日期部分功能是年(),月(), ()等,除非我遗漏了一些东西,这些都不足以计算DOY ...

回答

2

据我所知,唯一的解决办法是扩大现有的方言。这原来是相当无痛的:

public class SQLServerDialect extends org.hibernate.dialect.SQLServerDialect {  
    public SQLServerDialect() { 
    registerFunction("dayofyear", new SQLFunctionTemplate(Hibernate.INTEGER, "datepart(dayofyear, ?1)"));   
    } 
}