У меня есть база данных Oracle с полем timestamp
. Каков правильный код SQL для вставки timestamp
в это поле?
Как вставить временную метку в Oracle?
Ответ 1
insert
into tablename (timestamp_value)
values (TO_TIMESTAMP(:ts_val, 'YYYY-MM-DD HH24:MI:SS'));
если вы хотите, чтобы текущий штамп времени был вставлен, выполните следующие действия:
insert
into tablename (timestamp_value)
values (CURRENT_TIMESTAMP);
Ответ 2
INSERT
INTO mytable (timestamp_field)
VALUES (CURRENT_TIMESTAMP)
CURRENT_TIMESTAMP
и SYSTIMESTAMP
- зарезервированные слова Oracle для этой цели. Они являются аналогом временной метки SYSDATE
.
Ответ 3
INSERT INTO TABLE_NAME (TIMESTAMP_VALUE) VALUES (TO_TIMESTAMP('2014-07-02 06:14:00.742000000', 'YYYY-MM-DD HH24:MI:SS.FF'));
Ответ 4
Тип зависит от того, откуда берется значение, которое вы хотите вставить. Если вы хотите вставить текущее время, вы можете использовать CURRENT_TIMESTAMP
как показано в других ответах (или SYSTIMESTAMP
).
Если у вас есть время в виде строки и вы хотите преобразовать его в метку времени, используйте выражение вроде
to_timestamp(:timestamp_as_string,'MM/DD/YYYY HH24:MI:SS.FF3')
Я надеюсь, что компоненты формата времени говорят сами за себя, за исключением того, что FF3
означает 3 цифры с точностью до секунды. Вы можете достичь 6 цифр точности.
Если вы вставляете из приложения, лучший ответ может зависеть от того, как значение даты/времени хранится на вашем языке. Например, вы можете отобразить определенные объекты Java непосредственно в столбец TIMESTAMP
, но вам необходимо понимать сопоставления типов JDBC
.
Ответ 5
Я предпочитаю литералы timestamp ANSI:
insert into the_table
(the_timestamp_column)
values
(timestamp '2017-10-12 21:22:23');
Подробнее в руководстве: https://docs.oracle.com/database/121/SQLRF/sql_elements003.htm#SQLRF51062
Ответ 6
Вставка даты в sql
insert
into tablename (timestamp_value)
values ('dd-mm-yyyy hh-mm-ss AM');
Если мы хотим вставить системную дату
insert
into tablename (timestamp_value)
values (sysdate);
Ответ 7
Прежде всего вам нужно сделать поле Nullable, после чего так просто - вместо того, чтобы поместить значение, поместите этот код CURRENT_TIMESTAMP
.
Ответ 8
Для моей будущей ссылки:
С помощью cx_Oracle use cursor.setinputsize(...):
mycursor = connection.cursor();
mycursor.setinputsize( mytimestamp=cx_Oracle.TIMESTAMP );
params = { 'mytimestamp': timestampVar };
cusrsor.execute("INSERT INTO mytable (timestamp_field9 VALUES(:mytimestamp)", params);
Не требуется преобразование в db. См. Документация Oracle
Ответ 9
Можно просто использовать
INSERT INTO MY_TABLE(MY_TIMESTAMP_FIELD)
VALUES (TIMESTAMP '2019-02-15 13:22:11.871+02:00');
Таким образом, вам не придется беспокоиться о строке формата даты, просто используйте формат отметки времени по умолчанию.
Работает с Oracle 11, понятия не имею, так ли это для более ранних версий Oracle.
Ответ 10
CREATE TABLE Table1 (
id int identity(1, 1) NOT NULL,
Somecolmn varchar (5),
LastChanged [timestamp] NOT NULL)
это работает для mssql 2012
INSERT INTO Table1 VALUES('hello',DEFAULT)