Как вставить метку времени в Oracle?



у меня есть БД Oracle с timestamp поле в нем. Каков правильный SQL-код для вставки timestamp в этой области?

545   9  

9 ответов:

insert
into tablename (timestamp_value)
values (TO_TIMESTAMP(:ts_val, 'YYYY-MM-DD HH24:MI:SS'));

Если вы хотите, чтобы текущая отметка времени была вставлена, то:

insert
into tablename (timestamp_value)
values (CURRENT_TIMESTAMP);
INSERT
INTO    mytable (timestamp_field)
VALUES  (CURRENT_TIMESTAMP)

CURRENT_TIMESTAMP и SYSTIMESTAMP зарезервированы ли слова Oracle для этой цели. Они являются аналогом метки времени SYSDATE.

INSERT INTO TABLE_NAME (TIMESTAMP_VALUE) VALUES (TO_TIMESTAMP('2014-07-02 06:14:00.742000000', 'YYYY-MM-DD HH24:MI:SS.FF'));

вид зависит от того, откуда берется значение, которое вы хотите вставить. Если вы хотите вставить текущее время, вы можете использовать CURRENT_TIMESTAMP, как показано в других ответах (или SYSTIMESTAMP).

Если у вас есть время в виде строки и вы хотите преобразовать его в метку времени, используйте выражение типа

to_timestamp(:timestamp_as_string,'MM/DD/YYYY HH24:MI:SS.FF3')

компоненты формата времени, я надеюсь, не требуют пояснений, за исключением того, что FF3 означает 3 цифры субсекундной точности. Вы можете пойти до 6 цифр точность.

Если вы вставляете из приложения, лучший ответ может зависеть от того, как значение даты/времени хранится на вашем языке. Например, вы можете сопоставить определенные объекты Java непосредственно со столбцом TIMESTAMP, но вам нужно понять сопоставления типов JDBC.

Я предпочитаю ANSI timestamp литералы:

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

вставка даты в sql

insert
into tablename (timestamp_value)
values ('dd-mm-yyyy hh-mm-ss AM');

если бы мы хотели вставить системную дату

insert
into tablename (timestamp_value)
values (sysdate);

прежде всего вам нужно сделать поле Nullable, то после этого так просто - вместо того, чтобы поставить значение поставить этот код CURRENT_TIMESTAMP.

для моей собственной будущей ссылки:

С помощью курсора cx_Oracle.setinputsize(...):

mycursor = connection.cursor();

mycursor.setinputsize( mytimestamp=cx_Oracle.TIMESTAMP );
params = { 'mytimestamp': timestampVar };
cusrsor.execute("INSERT INTO mytable (timestamp_field9 VALUES(:mytimestamp)", params);

не требуется преобразование в БД. Смотрите Документация Oracle

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)  

Comments

    Ничего не найдено.