【发布时间】:2019-01-23 11:09:31
【问题描述】:
我正在尝试使用以下查询插入当前系统日期和时间,当我使用 to_timestamp(sysdate,'DD-MON-RR HH24.MI.SSXFF') 时,我没有得到时间。
如果我将其更改为 to_char(sysdate,'DD-MM-YYYY HH:MI:SS'),我会收到“不是有效月份错误”
insert into drv.t_evthst1 (
vehicle_no,
business_txn_date,
business_txn_time,
business_txn_count,
part_vehicle_no,
business_txn,
bus_txn_appl_rslt,
act_eps_date,
act_eps_time,
business_txn_src,
event_code,
event_indicator,
activity_code,
fnl_stock_status,
old_fnl_stock_st,
coveh_status,
old_coveh_status,
damg_status,
old_damg_status,
apt_status,
old_apt_status,
reg_status,
old_reg_status,
consign_status,
old_consign_status,
demo_veh_status,
old_demo_veh_st,
ordering_status,
old_ordering_st,
hold_status,
old_hold_status,
ctms_clear_status,
old_ctms_clear_st,
invc_status,
old_invc_st,
ibmsnap_logmarker,
created_by,
created_ts,
updated_by,
updated_ts,
src_sys_id
)
values (
'0004VT9K',
to_date('31-AUG-18', 'DD-MON-RR'),
to_date('01-JAN-01', 'DD-MON-RR'),
8,
'1',
'PR01',
'01',
to_date('31-AUG-18', 'DD-MON-RR'),
to_date('01-JAN-01', 'DD-MON-RR'),
'DREPP750',
'60',
' ',
' ',
'0',
' ',
'0',
' ',
'0',
' ',
'0',
' ',
'0',
' ',
'0',
' ',
'0',
' ',
'0',
' ',
'0',
' ',
'0',
' ',
'0',
' ',
to_char(sysdate, 'DD-MM-YYYY HH:MI:SS'),
'DRVMRSP1',
to_char(sysdate, 'DD-MM-YYYY HH:MI:SS'),
'DRVMRSP1',
to_char(sysdate, 'DD-MM-YYYY HH:MI:SS'),
'1750'
)
从第 3 行开始的错误命令 -
错误报告 - ORA-01843: not a valid month
【问题讨论】:
-
请格式化您的代码以使其易于阅读
-
sysdate已经是一个日期,如果你将它插入到date列中,你根本不应该操纵它。如果您要插入timestamp-type 列,请使用systimestamp。 -
当我使用 systimestamp 时,ORA-01830:日期格式图片在转换整个输入字符串之前结束
-
您到底为什么要将 DATE 值存储为
varchar? -
如果列是时间戳,那么为什么要尝试在其中存储一个 VARCHAR 值?