有什么方法可以从HQL中的日期中提取年份的日期(1-366)?是扩展我需要的方言并明确注册功能的唯一选择吗?我看到HSQL和DB2的方言已经注册,但是Oracle或SQL Server却没有运气。

据我所知,唯一可用的标准日期部分函数是year(),month(),day()等,除非我缺少某些东西,否则这些不足以计算DOY ...

最佳答案

据我所知,唯一的解决方案是扩展现有的方言。事实证明这很轻松:

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

09-26 09:58