如何在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_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)所示)。
如果你有一个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)