0
Отвечен

Период при подсчете среднего значения

Max 11 месяцев назад в Редактор каналов обновлен 11 месяцев назад 4

Доброго дня!

Прошу помощи со скриптом и функцией GetMeanValueFromDB. Необходимо подсчитать среднее значение из БД с начала часа, т.е. с  ЧЧ-00-00 до ЧЧ-ММ-СС. По примеру из документации значение за стуки получается посчитать без проблем. Текущее время к формату ЧЧ-00-00 удается привести скриптом. А вот подсунуть это значение как начало периода не могу. Далёк от программирования, надеюсь ткнете носом.

Заранее благодарю!

Ответ

Ответ
Отвечен

День добрый.

Var 
beginData, endData: TDate;

Begin
beginData := EncodeDate(2023, 06, 19) + EncodeTime(12, 00, 0, 00);
endData := EncodeDate(2023, 06, 19) + EncodeTime(13, 00, 00, 00);
end.

https://simplight.ru/manual_next/funktsii-dlya-raboty-s-datoy-i-vremenem/encodedate

https://simplight.ru/manual_next/funktsii-dlya-raboty-s-datoy-i-vremenem/encodetime

ХОРОШО, МНЕ ПОНРАВИЛОСЬ

Быстрый ответ, верное решение!

Всё отлично, спасибо большое!

Оценка удовлетворенности от Max 11 месяцев назад
Ответ
Отвечен

День добрый.

Var 
beginData, endData: TDate;

Begin
beginData := EncodeDate(2023, 06, 19) + EncodeTime(12, 00, 0, 00);
endData := EncodeDate(2023, 06, 19) + EncodeTime(13, 00, 00, 00);
end.

https://simplight.ru/manual_next/funktsii-dlya-raboty-s-datoy-i-vremenem/encodedate

https://simplight.ru/manual_next/funktsii-dlya-raboty-s-datoy-i-vremenem/encodetime

Благодарю за ответ! Это немного не то, что мне нужно.

Видимо не сильно подробно написал вопрос. Попробую еще раз.

Нужен скрипт, который будет выводить среднее значение с начала часа до текущего момента в канал.

Пример:

Сейчас 13 часов 16 минут 28 секунд.

beginData должна принять значение 13-00-00, endData - 13-16-28.

Var
res: Double;
beginData, endData: TDate;
nameChannel: String;

Begin
nameChannel := 'Данные 1';
beginData := ?????????;
endData := now();

res := GetMeanValueFromDB(beginData, endData, nameChannel);
WriteValue('ChannelAverage', FloatToStr((round(res*100))/100));
end.

Скрипт выполняется циклически, постоянно обновляя значение канала 'ChannelAverage'.

Соответственно при смене часа значение beginData должно смениться на 14-00-00

+2
Var
  Hour, Min, Sec, MSec: Word;
  beginData, endData: TDate;

Begin
    DecodeTime(now, Hour, Min, Sec, MSec);
    beginData := Trunc(now) + EncodeTime(Hour, 00, 0, 00);
    endData := now;
end.

Категорически благодарен!

Всё заработало как нужно!

Сервис поддержки клиентов работает на платформе UserEcho