2011-03-17 4 views
4

HQL의 날짜에서 일년 중 하루 (1-366)을 추출 할 수있는 방법이 있습니까? 필요한 방언을 확장하고 명시 적으로 함수를 등록하는 유일한 옵션입니까? HSQL과 DB2 방언에는 dayofyear가 등록되어 있지만 Oracle이나 SQL Server에는 운이 없다는 것을 알았습니다 ...HQL에서 연중 무휴?

내가 알 수있는 한, 표준 날짜 부분 기능은 year(), month(), day() 등등. 그리고 내가 뭔가를 놓치지 않는 한 이것들은 DOY를 계산하기에 충분하지 않다. ...

답변

2

내가 알 수있는 한, 유일한 해결책은 기존 방언을 확장하는 것이다. 이것은 상당히 고통 스럽습니다.

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