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

Avatar
  • обновлен
  • Отвечен

Доброго дня!

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

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

Как Вы оцениваете обслуживание, которое получили?

Оценка удовлетворенности от Max 1 год назад

Быстрый ответ, верное решение!Всё отлично, спасибо большое!

Добавьте комментарий о качестве обслуживания (необязательно):

Прикрепленные ответы
Avatar
СИМП Лайт (тех поддержка)
  • Ответ
  • Отвечен

День добрый.

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

Avatar
Max

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

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

Avatar
Цитата от Max

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

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

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

Пример:

Сейчас 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

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.
Avatar
Max

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

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

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

Пример:

Сейчас 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

Avatar
СИМП Лайт (тех поддержка)
  • Ответ
  • Отвечен

День добрый.

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