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

(в цикле по выключениям)
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
07.10.2002, 17:48
    #32056113
dkstranger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Timestamp: как правильно узнать, сколько прошло времени? ;)
DateDiff(second,Start,EventTime)
...
Рейтинг: 0 / 0
07.10.2002, 18:00
    #32056122
noir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Timestamp: как правильно узнать, сколько прошло времени? ;)
Нету такой функции :(
...
Рейтинг: 0 / 0
07.10.2002, 19:23
    #32056148
dkstranger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Timestamp: как правильно узнать, сколько прошло времени? ;)
Извиняйте, не посмотрел тему форума - я из MS SQL ...
...
Рейтинг: 0 / 0
08.10.2002, 16:18
    #32056403
FAGIM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Timestamp: как правильно узнать, сколько прошло времени? ;)
TIMESTAMP по своей сути строковый формат и CAST(TS as Integer) не поможет.

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

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

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

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


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