如何在Oracle中插入时间戳?


Answers:


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

如果要插入当前时间戳,则:

insert
into tablename (timestamp_value)
values (CURRENT_TIMESTAMP);

1
为什么要TO_DATE代替TO_TIMESTAMP
戴夫·科斯塔

这个简单的INSERT语句无关紧要,但是通常您不想使用这样的绑定变量。您的第一条语句中的类型转换可防止它对绑定敏感,这限制了Oracle创建良好计划的能力。如果改用values (:ts_val):ts_val直接映射到时间戳,则优化器可能会更好地工作。
乔恩·海勒

@JonHeller您能否显示一个具体示例,说明如何使用它to_timestamp会导致可计划的SQL语句执行计划不正确?我可以举一个例子,说明它不会怎么做。相反,我认为我们所有人都想避免的是意外的数据类型强制,该强制禁止使用预期的行源操作(即最佳操作)。
杰夫·霍尔特

@ jeff6times7有关未转换的绑定变量如何能胜过转换的绑定变量的说明,请参见本要点。差异可能仅在数据倾斜时才重要。使用本机绑定类型,Oracle可以更好地理解数据并根据值进行更好的估计。
乔恩·海勒

24
INSERT
INTO    mytable (timestamp_field)
VALUES  (CURRENT_TIMESTAMP)

CURRENT_TIMESTAMPSYSTIMESTAMP为此保留Oracle保留字。它们是的时间戳类似物SYSDATE


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

9

种类取决于您要插入的值来自何处。如果要插入当前时间,可以使用CURRENT_TIMESTAMP其他答案(或SYSTIMESTAMP)中所示的时间。

如果您将时间作为字符串并将其转换为时间戳,请使用类似以下的表达式

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

我希望时间格式的组成部分不言自明,除了那FF3意味着3位数的亚秒精度。您可以将精度提高到6位。

如果要从应用程序插入,则最佳答案可能取决于日期/时间值以您的语言存储的方式。例如,您可以将某些Java对象直接映射到TIMESTAMP列,但是您需要了解JDBC类型映射。



1

在SQL中插入日期

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

如果假设我们要插入系统日期

insert
into tablename (timestamp_value)
values (sysdate);

0

首先,您需要使该字段为Nullable,然后使它变得如此简单-而不是添加值,而是将此代码放进去CURRENT_TIMESTAMP


0

供我将来参考:

对于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文档


0

一个人可以简单地使用

INSERT INTO MY_TABLE(MY_TIMESTAMP_FIELD)
VALUES (TIMESTAMP '2019-02-15 13:22:11.871+02:00');

这样,您就不必担心日期格式字符串,只需使用默认的时间戳格式即可。

与Oracle 11一起使用时,不知道它是否适用于较早的Oracle版本。


-6
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)  
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.