0

再会,

在 sqlcl 中,我想运行一个构建插入语句的查询。如:

SELECT /*insert*/* FROM TABLE;

但是每个日期值都返回为to_timestamp('date', 'format'),而我想得到to_date('date', 'format')

我需要设置什么才能让这件事发生?

谢谢!!

编辑:

例如...我有两列 id 和 date 的表 datesaving。如果我运行此查询

SELECT /*insert*/ id,date FROM datesaving ;

我明白了

Insert into DATASAVING (ID, DATE) values (1,to_timestamp('2016-02-15 11:05:07','RRRR-MM-DD HH24:MI:SS'));

而我想得到这个

Insert into DATASAVING (ID, DATE) values (1,to_date('2016-02-15 11:05:07','RRRR-MM-DD HH24:MI:SS'));

我知道我可以更改 de nls_format,但我不知道如何更改它。

4

1 回答 1

0

这是因为我们在 sqlcl 中返回的元数据告诉我们 DATE 列是时间戳,因此代码将其视为时间戳。但是,它会正常工作。

SQL> create table test_insert(id number,dt date,ts timestamp);

Table TEST_INSERT created.

SQL> insert into test_insert values(1,sysdate,systimestamp);

1 row inserted.

SQL> set sqlformat insert
SQL> select * from test_insert;
REM INSERTING into TEST_INSERT
SET DEFINE OFF;
Insert into TEST_INSERT (ID,DT,TS) values (1,to_timestamp('02-FEB-18','DD-MON-RR HH.MI.SSXFF AM'),to_timestamp('02-FEB-18 01.47.57.017643000 PM','DD-MON-RR HH.MI.SSXFF AM'));

<<<copy pasted to run the output >>>

SQL> insert into TEST_INSERT (ID,DT,TS) values (1,to_timestamp('02-FEB-18','DD-MON-RR HH.MI.SSXFF AM'),to_timestamp('02-FEB-18 01.47.57.017643000 PM','DD-MON-RR HH.MI.SSXFF AM'));

1 row inserted.
于 2018-02-02T13:52:04.410 回答