Я использую самую последнюю библиотеку 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
, который представляет end периода, указанного в столбце timestep
.
Как я могу получить время начала для того же периода? Я знаю, что PI-SQL поддерживает некоторые литеральные математические литералы даты, но я не могу понять синтаксис для time - RELDATE('1h')
или чего-либо еще, что затем может быть псевдонимом starttime
.
(Предостережение: я не использую PI, поэтому я летаю вслепую и не могу просто пробовать и ошибаться. У меня есть Руководство для поставщика данных PI OLEDB, но оно довольно скудное по деталям.)
Я понимаю, что мог бы что-то совместить в SQL Server, но я бы предпочел использовать функции даты PI, поэтому, когда SQL Server возвращает данные, дополнительная работа не требуется. Я работаю с рядом значений timestep
, так что это не просто статический DATEADD () в SQL Server.