我想查询一个有多行的表,每行都有一个timestamp
数据,数据间隔为十分钟。我想找到任何缺失数据的开头,即timestamp
下一个十分钟间隔不相等的地方,如下所示:
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]
到目前为止我有这个,但我看不到如何构建查询让我在上面的查询中执行b.[timestamp] = dateadd(mi, 10, a.[timestamp]):
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
只是不允许我比较 sqlfunction 和我的时间戳。
我希望我使用上面的代码走在正确的轨道上,但是如果我完全不打算解决这个问题,请纠正我......
亲切的问候