powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Timestamp: как правильно узнать, сколько прошло времени? ;)
8 сообщений из 8, страница 1 из 1
Timestamp: как правильно узнать, сколько прошло времени? ;)
    #32056108
noir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Короче, надо с помощю хранимой процедуры узнать сколько времени работал некий агрегат, если известно время когда его включили, и время, когда его отключили. Делал так:

(в цикле по выключениям)
Sigma_off=Sigma_off+(EventTime-Start);

(в цикле по включениям)
Sigma_on=Sigma_on+(EventTime-Start);

TotalTime=Sigma_off-Sigma_on;
Suspend;

На первой же попытке выполнить етот код IBExpert ругаеться "Expression evaluation not supported.".
В чем дело?

Сервер Firebird 1.0.0
...
Рейтинг: 0 / 0
Timestamp: как правильно узнать, сколько прошло времени? ;)
    #32056113
dkstranger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DateDiff(second,Start,EventTime)
...
Рейтинг: 0 / 0
Timestamp: как правильно узнать, сколько прошло времени? ;)
    #32056122
noir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нету такой функции :(
...
Рейтинг: 0 / 0
Timestamp: как правильно узнать, сколько прошло времени? ;)
    #32056148
dkstranger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняйте, не посмотрел тему форума - я из MS SQL ...
...
Рейтинг: 0 / 0
Timestamp: как правильно узнать, сколько прошло времени? ;)
    #32056403
FAGIM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TIMESTAMP по своей сути строковый формат и CAST(TS as Integer) не поможет.

В то же время в WinAPI есть функции, переводящие из строки с датой-временем в некое числовое выражение.

Вот их и надо задекларировать как внешние функции и вызывать с ними.

Лучше всего сделать свой DLL, объявляющие эти функции, дай бог не соврать из USER.EXE (Win95/98)
...
Рейтинг: 0 / 0
Timestamp: как правильно узнать, сколько прошло времени? ;)
    #32056442
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TIMESTAMP не строковый, а совместимый со строковым. На самом деле это DOUBLE PRECISSION и разница в день там равна 1, в час - 0,041666666, в секунду - 0,000011574
...
Рейтинг: 0 / 0
Timestamp: как правильно узнать, сколько прошло времени? ;)
    #32056443
noir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема таки-решилась...

разность двух дат:
Days=cast((cast(EventTime as Timestamp)- cast(Start as Timestamp))as double precision);

результат - кол-во дней между Timestamp'ами Start и EventTime.

Изменение даты:
CAST(cast('1999-11.11 21:51:00.0' as Timestamp) + (CAST(Increment AS FLOAT) / CAST((24 * 60 * 60) AS
FLOAT) ) AS TIMESTAMP)

Добавить Increment секунд к 1999-11.11 21:51:00.0.

P.S. Кто бы это ни придумал, он - <skipped>.
...
Рейтинг: 0 / 0
Timestamp: как правильно узнать, сколько прошло времени? ;)
    #32056446
noir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое спасибо всем, за интерес к теме... Между прочим даже в борландовской ньюсгруппе это прендлагали делать на UDF... Пока кто-то не нарисовал вышеупомянутые строчки.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Timestamp: как правильно узнать, сколько прошло времени? ;)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]