Я хотел бы запросить таблицу с несколькими строками, каждая из которых содержит timestamp
с данными, поступающими с интервалом в десять минут. Я хотел бы найти начало любой недостающих данных, что там, где не timestamp
сравнявшись следующий десять минутный интервал, например:NHibernate QueryOver SQLFunction in where where
select a.[timestamp]
from [table] as a
where not exists (select 1
from [table] as b
where a.[id] = b.[id]
and b.[timestamp] = dateadd(mi, 10, a.[timestamp]))
order by a.[timestamp]
меня это до сих пор, но я не вижу, как построить запрос, чтобы позволить мне сделать б [метка] = DateAdd (миль, 10, а [метка].) в приведенном выше запросе:.
Table tableAlias = null;
IList<DateTimeOffset> dateTimeOffsets = session.QueryOver(() => tableAlias)
.WithSubquery
.WhereNotExists(QueryOver.Of<Table>()
.Where(x => x.Id == tableAlias.Id)
.And(Restrictions.Eq(Projections.SqlFunction("addminutes",
NHibernateUtil.DateTimeOffset,
new[]
{
Projections.Property("Timestamp"),
Projections.Constant(10)
}),
<insert timestamp property again here>))
.Select(Projections.Constant(1)))
.Select(x => x.Timestamp)
.List<DateTimeOffset>();
Я не могу получить мою голову вокруг ограничения на часть sqlfuntion - Nhibernate
просто не позволит мне выполнить сравнение функции sql и моей метки времени.
Я надеюсь, что я нахожусь на правильном пути с вышеприведенным кодом, но, пожалуйста, поправьте меня, если я полностью выключен с моей попытки решить эту ...
Сердечные приветы
+1 Обычно я использую поле id для выбора предложения exists ... тогда NH не должен создавать избыточный параметр для константы (1). – dotjoe