Вставьте SYSTIMESTAMP для поля Timestamp
У меня есть три метки времени в моей таблице SQL.
Column Name Data Type Nullable Data_Default
STATUS_TIMSTM TIMESTAMP(6) No (null)
CREATED_TIMSTM TIMESTAMP(6) No SYSTIMESTAMP
UPDATED_TIMSTM TIMESTAMP(6) No (null)
INSERT INTO "TABLE_NAME" ("STATUS_TIMSTM","CREATED_TIMSTM","UPDATED_TIMSTM")
VALUES(TIMESTAMP '2020-12-10 00:00:00', TIMESTAMP '2020-06-15 00:00:00',TIMESTAMP '2020-06-15 00:00:00');
Вышеупомянутое работает правильно.
Как вставить текущий
systimestamp
?
Я пробовал несколько вариантов: curdate(), now(), systimestamp().
Обычно я получаю такие ошибки, как отчет об ошибке — ошибка SQL: ORA-00904: «СЕЙЧАС»: неверный идентификатор 00904. 00000 — «%s: неверный идентификатор»
3 ответа
Вы должны быть в состоянии использовать
current_timestamp
:
create table t (x TIMESTAMP(6));
insert into t (x) values (current_timestamp);
Конечно,
systimestamp
тоже должно работать.
Вот скрипка db<>.
В Oracle вы бы
insert into my_table(timestamp_column) values (systimestamp);
Обратите внимание, что вызов функции не включает круглые скобки после имени функции. Oracle довольно странный в этом отношении; функции, не принимающие параметров, но определяемые вами самостоятельно, должны использовать пустые круглые скобки, но аналогичные функции (без параметров), предоставляемые Oracle, должны использоваться без круглых скобок. Только Oracle знает, почему это несовместимо. Это объясняет, почему ваша попытка не удалась.
(На самом деле, некоторые эксперименты с показывают, что он может принимать аргумент — положительное целое число, которое показывает, сколько десятичных разрядов вы хотите для секунд! В любом случае, вы не можете использовать его с пустыми скобками.)
Существуют и другие «текущие» функции отметки времени, но они делают разные вещи. возвращает отметку времени компьютерной системы, на которой размещен сервер базы данных. (Обратите внимание, что это может и часто отличается от временной метки базы данных.) В любом случае, это наиболее часто используемый из них; похожий на
Однако остерегайтесь часового пояса.
Поскольку у вас уже есть ДАННЫЕ ПО УМОЛЧАНИЮ, только вставка данных в формате ниже должна заполнить
CREATED_TIMSTM
колонка с током
TIMESTAMP
.
INSERT INTO "TABLE_NAME" ("STATUS_TIMSTM","UPDATED_TIMSTM")
VALUES(TIMESTAMP '2020-12-10 00:00:00', TIMESTAMP '2020-06-15 00:00:00');
Вот упрощенная скрипта БД, демонстрирующая то же самое.