Как можно получить текущее время в Interbase?

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
Александр

Как можно получить текущее время в Interbase?

Сообщение Александр » 03 ноя 2004, 08:24

Хочу в триггере делать запись в определенные поля таблицы времени срабатывания триггера и пользователя, выполняющего действие. Как это можно реализовать?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 03 ноя 2004, 08:30

current_time, current_date, current_timestamp
select cast('today' as date), cast('now' as timestamp) ...

Сергей

Re: Как можно получить текущее время в Interbase?

Сообщение Сергей » 03 ноя 2004, 09:02

Для синхронизации времени с сервером использую простую процедуру:

CREATE PROCEDURE SERVER_DATE_TIME
RETURNS (
PSERVER_DATE_TIME DATE)
AS
begin
/* Procedure Text */
PSERVER_DATE_TIME ="NOW";
suspend;
end

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 03 ноя 2004, 09:12

Сергей, на третий диалект так и не перешел? Тогда не советуй людям старый код, с двойными кавычками.

Eduard

Сообщение Eduard » 09 ноя 2004, 16:06

Раньше этим интересовался, пришел тогда к выводу (эмпирическому тоже). Если вы таким образом хотите узнать время выполнения процедуры - то в одной транзакции не получится (при начале - dstart = now и dstop=now, это будет одно и тоже время), а второе - точность -секунда, то есть про миллисекунды на стороне FB сервера забудьте.
Хотя много воды утекло - может быть я не прав, и буду этому рад.

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Сообщение dimitr » 11 ноя 2004, 10:46

1. CURRENT_blahblah возвращают время начала выполнения текущего запроса (не транзакции). Т.е. в процедуре это значение всегда будет одно и то же. UPDATE ... SET F = CURRENT_TIME установит все записи в одно и то же значение. 'NOW' всегда возвращает точное время на момент использования.

2. Миллисекунды возвращаются начиная с FB 2.0.

Ответить