Как можно получить текущее время в Interbase?
Как можно получить текущее время в Interbase?
Хочу в триггере делать запись в определенные поля таблицы времени срабатывания триггера и пользователя, выполняющего действие. Как это можно реализовать?
Re: Как можно получить текущее время в Interbase?
Для синхронизации времени с сервером использую простую процедуру:
CREATE PROCEDURE SERVER_DATE_TIME
RETURNS (
PSERVER_DATE_TIME DATE)
AS
begin
/* Procedure Text */
PSERVER_DATE_TIME ="NOW";
suspend;
end
CREATE PROCEDURE SERVER_DATE_TIME
RETURNS (
PSERVER_DATE_TIME DATE)
AS
begin
/* Procedure Text */
PSERVER_DATE_TIME ="NOW";
suspend;
end
Раньше этим интересовался, пришел тогда к выводу (эмпирическому тоже). Если вы таким образом хотите узнать время выполнения процедуры - то в одной транзакции не получится (при начале - dstart = now и dstop=now, это будет одно и тоже время), а второе - точность -секунда, то есть про миллисекунды на стороне FB сервера забудьте.
Хотя много воды утекло - может быть я не прав, и буду этому рад.
Хотя много воды утекло - может быть я не прав, и буду этому рад.
1. CURRENT_blahblah возвращают время начала выполнения текущего запроса (не транзакции). Т.е. в процедуре это значение всегда будет одно и то же. UPDATE ... SET F = CURRENT_TIME установит все записи в одно и то же значение. 'NOW' всегда возвращает точное время на момент использования.
2. Миллисекунды возвращаются начиная с FB 2.0.
2. Миллисекунды возвращаются начиная с FB 2.0.