如何在Oracle中插入时间戳?

我有一个带有timestamp字段的Oracle数据库。 什么是正确的SQL代码插入timestamp到这个领域?

 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_TIMESTAMPSYSTIMESTAMP是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)所示)。

如果你有一个string的时间,并想将其转换为时间戳,使用类似的expression式

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

时间格式组件,我希望,不言而喻,除了FF3意味着亚秒精度的3位数字。 你可以高达6位数的精度。

如果从应用程序插入,最佳答案可能取决于date/时间值如何存储在您的语言中。 例如,您可以将某些Java对象直接映射到TIMESTAMP列,但是您需要了解JDBCtypes映射。

在sql中插入date

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

如果我们想要插入系统date

 insert into tablename (timestamp_value) values (sysdate); 

首先,你需要使字段Nullable,然后这么简单 – 而不是把这个代码放在CURRENT_TIMESTAMP值。

为了我未来的参考:

用cx_Oracle使用cursor.setinputsize(…):

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

没有转换在分贝需要。 请参阅Oracle文档

我更喜欢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

 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)