在sql developer中插入时间戳值

pwuypxnk  于 2021-07-26  发布在  Java
关注(0)|答案(3)|浏览(298)

您好,在oracle sql developer版本19.4.0.354中插入此值时遇到问题。
'2013-01-01 00:00:00.0000'
这是我想在我的一个表中插入的值。
我尝试了日期和时间戳数据类型,但它们不起作用。我还尝试在互联网上改变会话和其他可能的解决方案。

qpgpyjmq

qpgpyjmq1#

列数据类型应为 TIMESTAMP . 在中使用适当的格式掩码 TO_TIMESTAMP 功能。

SQL> create table test (col timestamp);

Table created.

SQL> insert into test (col) values (to_timestamp('2013-01-01 00:00:00.0000', 'yyyy-mm-dd hh24:mi:ss:ff6'));

1 row created.

里面有什么( alter session 只是以所需格式显示结果;它不影响该列中存储的值):

SQL> alter session set nls_timestamp_format = 'dd.mm.yyyy hh24:mi:ss.ff6';

Session altered.

SQL> select * From test;

COL
---------------------------------------------------------------------------
01.01.2013 00:00:00.000000

SQL>
xa9qqrwz

xa9qqrwz2#

最简单的方法是使用文字时间戳,因此不依赖隐式转换:

select timestamp '2013-01-01 00:00:00.0000' from dual;

你也可以使用 to_timestamp() :

select to_timestamp('2013-01-01 00:00:00.0000', 'yyyy-mm-dd hh24:mi:ss:ff4') from dual;

另一方面,如果确实要处理字符串,则需要在以下操作之前将nls设置更改为自己的格式:

alter session set nls_timestamp_format = 'yyyy-mm-dd hh24:mi:ss:ff4';

然后可以在查询中直接使用pass传递字符串值,oracle将在插入时隐式地将其转换为目标数据类型。

sdnqo3pr

sdnqo3pr3#

你没有时间成分,所以我只能用:

date '2013-01-01'

这是最安全的语法(也是最清晰和标准的!)用于提供日期值。
如果oracle需要一个时间戳,它会正确地转换它。

相关问题