我有一个带有timestamp
字段的Oracle DB。将timestamp
插入此字段的正确SQL代码是什么?
insert
into tablename (timestamp_value)
values (TO_TIMESTAMP(:ts_val, 'YYYY-MM-DD HH24:MI:SS'));
如果要插入当前时间戳,则:
insert
into tablename (timestamp_value)
values (CURRENT_TIMESTAMP);
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)
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时间戳文字:
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使用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 Documentation
人们可以简单地使用
INSERT INTO MY_TABLE(MY_TIMESTAMP_FIELD)
VALUES (TIMESTAMP '2019-02-15 13:22:11.871+02:00');
这样您就不必担心日期格式字符串,只需使用默认的时间戳格式。
与Oracle 11一起使用,不知道它是否适用于早期的Oracle版本。