如何在Oracle中插入时间戳?

问题描述 投票:77回答:10

我有一个带有timestamp字段的Oracle DB。将timestamp插入此字段的正确SQL代码是什么?

sql oracle
10个回答
121
投票
insert
into tablename (timestamp_value)
values (TO_TIMESTAMP(:ts_val, 'YYYY-MM-DD HH24:MI:SS'));

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

insert
into tablename (timestamp_value)
values (CURRENT_TIMESTAMP);

-5
投票
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)  

23
投票
INSERT
INTO    mytable (timestamp_field)
VALUES  (CURRENT_TIMESTAMP)

CURRENT_TIMESTAMPSYSTIMESTAMP是用于此目的的Oracle保留字。它们是SYSDATE的时间戳类比。


17
投票
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类型映射。


3
投票

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


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);

不需要在db中进行转换。见Oracle Documentation


0
投票

人们可以简单地使用

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.