Я хочу использовать метку времени UTC в качестве значения по умолчанию для столбца TIMESTAMP.Мы используем DB2 9.5 в Linux
. Мне известно об использовании CURRENT TIMESTAMP, но он предоставляет локальное время сервера DB2 (например, CEST).В запросах вы можете использовать
SELECT JOB_ID, (CURRENT TIMESTAMP - CURRENT TIMEZONE) as tsp FROM SYSTEM_JOBS;
, но это не работает в определении столбца
ALTER TABLE SYSTEM_JOBS ALTER COLUMN CREATED SET DEFAULT CURRENT TIMESTAMP - CURRENT TIMEZONE
[42601][-104] An unexpected token "ALTER TABLE SYSTEM_JOBS ALTER COLUMN CREAT" was found following "BEGIN-OF-STATEMENT". Expected tokens may include: "<values>".. SQLCODE=-104, SQLSTATE=42601, DRIVER=4.23.42
Я также попытался определить функцию, которая выполняет вычисления.
CREATE OR REPLACE FUNCTION UTCTIMESTAMP ()
RETURNS TIMESTAMP
LANGUAGE SQL
DETERMINISTIC
NO EXTERNAL ACTION
BEGIN ATOMIC
DECLARE L TIMESTAMP;
DECLARE U TIMESTAMP;
SET L = CURRENT TIMESTAMP;
SET U = L - CURRENT TIMEZONE;
RETURN U;
END
;
Но это также не принимается в определении столбца
ALTER TABLE SYSTEM_JOBS ALTER COLUMN CREATED SET DEFAULT UTCTIMESTAMP();
[42894][-574] DEFAULT value or IDENTITY attribute value is not valid for column "CREATED" in table "DB2INST1.SYSTEM_JOBS". Reason code: "7".. SQLCODE=-574, SQLSTATE=42894, DRIVER=4.23.42
Я ищу метод для установки значения по умолчанию в нейтральном UTC.