Как использовать oracle SYSTIMESTAMP в подготовленном запросе оператора? - PullRequest
0 голосов
/ 16 апреля 2020

Мне нужно выполнить запрос вставки, где один столбец должен хранить метку времени. Эта временная метка должна быть системной датой, сгенерированной базой данных oracle при вставке. Я выполняю подготовленное заявление, похожее на это:

insert into table_name (column1 , timestamp) values(?,SYSTIMESTAMP);

Но это вызывает исключение в java при выполнении.

Я пытался с этим, он работал:

insert into table_name (column1 , timestamp) 
values(?,TO_TIMESTAMP(?, 'DD-MON-RR HH.MI.SSXFF AM'));

Здесь я передаю метку времени, сгенерированную java, что не является моим требованием. Я должен хранить метку времени, сгенерированную БД.

1 Ответ

0 голосов
/ 16 апреля 2020
SQL> 
create table t (col1 number, col2 timestamp default systimestamp);

Table T created.


SQL> 
insert into t (col1) values (0);

1 row inserted.

SQL> 
insert into t (col1) values (1);

1 row inserted.

SQL> 
insert into t (col1, col2) values (2, systimestamp + 3);

1 row inserted.


SQL> 
select * from t;

      COL1 COL2                
---------- --------------------
         0 16-APR-2020 07.07.15
         1 16-APR-2020 07.07.15
         2 19-APR-2020 07.07.15

Если вы создаете столбец таблицы со значением по умолчанию, то при вставке строки oracle вставит значение по умолчанию, если значение не указано.

...