在 SQL 开发人员中插入时间戳值
Inserting a TIMESTAMP value in SQL Developer
您好,我在 Oracle SQL 开发人员版本 19.4.0.354 中插入此值时遇到问题。
'2013-01-01 00:00:00.0000'
这是我要插入到我的一个表中的值。
我尝试了 DATE 和 TIMESTAMP 数据类型,但它们不起作用。我还尝试在整个互联网上更改会话和其他可能的解决方案。
列数据类型应为 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>
最简单的方法是使用文字 时间戳,这样您就不会依赖隐式转换:
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';
然后您可以在查询中直接传递您的字符串值,Oracle 会在插入时将其隐式转换为目标数据类型。
你没有时间组件,所以我会使用:
date '2013-01-01'
这是提供日期值的最安全的语法(也是最清晰和标准的!)。
如果 Oracle 需要时间戳,它会正确转换。
您好,我在 Oracle SQL 开发人员版本 19.4.0.354 中插入此值时遇到问题。
'2013-01-01 00:00:00.0000'
这是我要插入到我的一个表中的值。
我尝试了 DATE 和 TIMESTAMP 数据类型,但它们不起作用。我还尝试在整个互联网上更改会话和其他可能的解决方案。
列数据类型应为 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>
最简单的方法是使用文字 时间戳,这样您就不会依赖隐式转换:
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';
然后您可以在查询中直接传递您的字符串值,Oracle 会在插入时将其隐式转换为目标数据类型。
你没有时间组件,所以我会使用:
date '2013-01-01'
这是提供日期值的最安全的语法(也是最清晰和标准的!)。
如果 Oracle 需要时间戳,它会正确转换。