我正在使用最新的PI-OLEDB库将OSIsoft PI Historian中的聚合视图中的数据读取到SQL Server中。示例:
SELECT time, value
FROM piavg
WHERE
timestep = RELDATE('1h')
AND tag = TAGNAME('mytag')
AND time > DATE('4-Mar-12 00:00:00');
不幸的是,聚合视图(PIavg等)仅提供单个time
列,该列表示timestep
列指定的周期的结束。
如何检索同一时段的开始时间?我知道PI-SQL支持一些时髦的日期数学文字,但我不太清楚time - RELDATE('1h')
或其他可以别名为starttime
的语法。
(注意:我不使用PI,所以我是盲目的,不能只是试错。我有PI OLEDB数据提供程序手册,但它在细节上相当稀疏。)
我意识到我可以在SQL Server中拼凑一些东西,但我宁愿使用PI日期函数,这样当SQL Server取回数据时就不需要额外的工作了。我正在处理许多timestep
值,所以它不仅仅是SQL Server中的静态DATEADD()。
事实证明time - RELDATE('1h')
工作得很好。