所以我以varchar2(7)格式传递数据,我需要将其转换为日期格式,然后插入触发器中。我知道函数to_Date(date,' dddyyyy')存在,但有dddyyyy和ddyyyy格式的值。我已尝试过以下操作,但仍然需要在一个月的某一天和每个月的最后一天之间进行操作。错误。我的代码如下:
Insert into Submission
(RESPONDENT_ID, SUBMISSION_DT, SUBMISSION_TYPE_ID, SUBMISSION_NAME_TX, SUBMISSION_SEQ_NB, CREATE_DT, CREATE_USER_ID, MODIFY_DT, MODIFY_USER_ID, EFFECTIVE_DT, INACTIVE_DT)
VALUES
('2527451', CASE WHEN :new.data_date > 99999 then To_Date(:new.data_Date, 'dddyyyy') ELSE To_Date(:new.data_Date, 'ddyyyy') END, '1', '20190418', '0', sysdate, '1', null, null, null, null);
data_date的示例数据:
612014 3652014 012015
期望的结果:
Mar-02-2014 (3/1/YYYY for leap year), Dec-31-2014 (Dec-30 for leap year), Jan-01-2015.
所以我的问题是,即使使用LPAD方法,在日历年中有9天没有计算(1YYYY - 确切地说是9YYYY)。这些日期我该怎么办?日期是varchar格式,所以我不能使用操作条件语句(即CASE WHEN:new.data_date< = 10000 THEN to_date(lpad(:new.data_Date,7,' 00' ),' DDDYYYY')
答案 0 :(得分:2)
如何填充左边的数字?
Insert into Submission (RESPONDENT_ID, SUBMISSION_DT, SUBMISSION_TYPE_ID, SUBMISSION_NAME_TX, SUBMISSION_SEQ_NB, CREATE_DT, CREATE_USER_ID, MODIFY_DT, MODIFY_USER_ID, EFFECTIVE_DT, INACTIVE_DT)
values ('2527451',
to_date(lpad(:new.data_Date, 7, '0'), 'DDDYYYY'),
'1', '20190418', '0', sysdate, '1', null, null, null, null
);
注意:如果表中的值是数字,则不要对其值使用单引号。