С чего начать.
Выберите дни рождения, где день рождения от 5 дней до 10 дней.
var today = DateTime.Now();
var results = session.CreateQuery("select p.Birthday from Person
where p.Birthday>= :from and p.Birthday<=:to")
.SetParameter("from", today.AddDays(10))
.SetParameter("to", today.Subtract(new TimeSpan(5, 0, 0, 0)))
.List<DateTime>();
Хотя я думаю, что вы хотите получать дни рождения независимо от года.
Чтобы реплицировать этот запрос на HQL, вам нужно зарегистрировать конкретные функции SQL, которые вам нужны, с помощью этой техники:
Регистрация пользовательской функции SQL в NHibernate
Тогда вы сможете повторить ваш SQL-запрос на HQL.
Это хороший вопрос на стороне SQL:
SQL Выберите предстоящие дни рождения
Свежая тактика:
Зарегистрировать функцию SQL для даты:
RegisterFunction("datediffdays",
new SQLFunctionTemplate(NHibernateUtil.Int32, "datediff(dd,?1, ?2)"));
HQL Query
var result = session.CreateQuery(@"from Person
where 1 = (floor(datediffdays(Birthday,current_timestamp()+10) / 365.25))
- (datediffdays(Birthday,current_timestamp()-5) / 365.25))")
.List<Person>();