Вопрос:
Как правильно задать период времени от текущего момента, например: минус минута, минус час, минус сутки, минус месяц, год?
Ответ:
Рассмотрим несколько примеров задания периода времени. В этих примерах будет использовать следующие основополагающие функции:
Now | Возвращает текущие дату и время |
Date | Возвращает текущую дату |
Ряд функций системы программирования СИМП Лайт требуют указать период времени. В основном это функции, работающие с базой данных СИМП Лайт. Например, функция GetMaxValueFromDB в скрипте выглядит так, при условии конечно, что значения всех переменных, указанных в функции, были заданы в вышележащих строках скрипта:
res := GetMaxValueFromDB(beginData, endData, nameChannel);
ПримечаниеСледует помнить, что начальная дата (beginData) на шкале времени должна лежать раньше конечной даты (endData), в противном случае результатом работы функции GetMaxValueFromDB() будет нулевое значение. |
Кроме переменных в функции GetMaxValueFromDB() можно указывать и реальные значения, что и будем использовать в дальнейших примерах.
Максимальное значение канала 'Температура 1' за последние 17 дней с текущего момента времени:
res := GetMaxValueFromDB(now - 17, now, 'Температура 1');
Максимальное значение канала 'Температура 1' за последние прошедшие 17 дней, то есть с 00:00 часов 17 дней назад, по 24:00 вчерашнего дня:
res := GetMaxValueFromDB(date - 17, date - 1, 'Температура 1');
Максимальное значение канала 'Температура 1' за период между указанными датами:
res := GetMaxValueFromDB(StrToDate('01.09.2023'), StrToDate('21.09.2023'), 'Температура 1');
res := GetMaxValueFromDB(StrToDateTime('01.09.2023 07:00'), StrToDateTime('21.09.2023 23:00'), 'Давление');
Максимальное значение канала 'Температура 1' за последний час:
res := GetMaxValueFromDB(now - 1 / 24, now, 'Температура 1');
Максимальное значение канала 'Температура 1' за последнюю минуту:
res := GetMaxValueFromDB(now - 1 / (24 * 60), now, 'Температура 1');
Максимальное значение канала 'Температура 1' за последние 25 секунд.
res := GetMaxValueFromDB(now - 25 / (24 * 60 * 60), now, 'Температура 1');
Следует помнить, что малыми временными периодами, отсчитываемыми от текущего времени не следует увлекаться, потому что запись значений переменных активных каналов из буфера в оперативной памяти компьютера в базу данных (в файл на жестком диске) производится не сразу, а с определенной периодичностью, что может искажать получаемые результаты. |
Максимальное значение канала 'Температура 1' за последний месяц:
Максимальное значение канала 'Температура 1' за последний год: