SYSDATE 在 SQL 开发人员 DML 导出中隐式转换为 to_date()

问题描述 投票:0回答:1

我正在尝试从 sql Developer(v 17.4)导出 dml,但日期列没有按预期出现。

在插入记录时,我使用 SYSDATE 作为日期字段,但我认为 sql 开发人员隐含地将 SYSDATE 转换为 to_date()。这是我用来插入的查询 -

插入 table_name (INT_OBJ_ID,INT_OBJ_NM,CREATE_DT,CREATE_USER_ID,UPDATE_DT,UPDATE_USER_ID) 值 (2016,'RDS_BV_RETURN_MAIL_INFO',SYSDATE,'User01',SYSDATE,'User01');

但是在 DML 导出中我得到了这个 -

插入 table_name (INT_OBJ_ID,INT_OBJ_NM,CREATE_DT,CREATE_USER_ID,UPDATE_DT,UPDATE_USER_ID) 值 (2016,'RDS_BV_RETURN_MAIL_INFO',to_date('09-AUG-23','DD-MON-RR'),'User01',to_date( '09-AUG-23','DD-MON-RR'),'User01');

加急出口: 插入 table_name (INT_OBJ_ID,INT_OBJ_NM,CREATE_DT,CREATE_USER_ID,UPDATE_DT,UPDATE_USER_ID) 值 (2016,'RDS_BV_RETURN_MAIL_INFO',SYSDATE,'User01',SYSDATE ,'User01');

有谁知道如何解决这个问题吗?

[My Export wizard screenshots(incase it helps)](https://i.stack.imgur.com/C0Lja.png)

我试图找到默认隐式转换的设置,但找不到任何设置。甚至尝试在 NLS 中给出 SYSDATE,但它期望有效的日期格式。

sql oracle oracle-sqldeveloper date-formatting dml
1个回答
0
投票

导出在该列中找到的提取内容。它没有找到

SYSDATE
(作为函数名称),但在插入时由
SYSDATE
函数返回值,显然,该行是 2023 年 8 月 9 日。

导出(实际上是编程它的人)选择使用带有适当格式掩码的

to_date
功能:
to_date('09-AUG-23', 'DD-MON-RR')

不过,我宁愿看到一些不同的东西,比如

to_date('09.08.2023', 'dd.mm.yyyy')
。您当然无法将“AUG”插入到我的克罗地亚语数据库中 - 当然,如果没有其他设置(更改会话以设置格式模型和语言)。

我认为您无法在出口中获得

SYSDATE
。但是,您可以做的是从导出中省略日期列:在“指定数据”步骤中,不要包含所有列(
*
) - 单击铅笔按钮并取消选中日期列。然后,在目标端,将列的默认值设置为
sysdate
,例如

alter table target_table modify date_column default sysdate;

或插入后手动填充,例如

update target_table set date_column = sysdate where date_column is null;
© www.soinside.com 2019 - 2024. All rights reserved.