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

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
СИМП Лайт (тех поддержка)
  • Ответ
  • Отвечен

День добрый.

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

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

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

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

Пример:

Сейчас 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
Цитата от 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

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

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