我有下面的过程,我想将字符串数据转换为日期并将其与其他日期进行比较。
这eev.screen_entry_value是一个 Varchar2,其值的格式为“2018/10/26 00:00:00”。
我想将其转换为日期格式并与其他日期进行比较,如下所示 -
TO_DATE(to_date(eev.screen_entry_value,'YYYY/MM/DD HH24:MI:SS'),'DD-MON-YYYY') BETWEEN P_START_DATE AND P_END_DATE;
但是,我遇到了一个错误-
ORA-01861: 文字与格式字符串不匹配
下面是我的代码片段-
declare
p_start_date DATE;
p_end_date DATE;
p_screen_entry_value varchar2(60);
BEGIN
SELECT ptp2.start_date, ptp2.end_date
into p_start_date, p_end_date
FROM per_time_periods ptp
, per_time_periods ptp2
, pay_payrolls_f pp
WHERE pp.payroll_name LIKE 'US Semi-Monthly'
AND TRUNC(sysdate) BETWEEN pp.effective_start_date AND pp.effective_end_date
AND pp.payroll_id = ptp.payroll_id
AND TRUNC(sysdate) BETWEEN ptp.START_DATE AND ptp.END_DATE
AND ptp.payroll_id = ptp2.payroll_id
AND ptp.end_date BETWEEN ptp2.start_date AND ptp2.end_date;
dbms_output.put_line(p_start_date);
dbms_output.put_line(p_end_date);
SELECT eev.screen_entry_value
into p_screen_entry_value
FROM pay_input_values_f piv,
pay_element_types_f et,
pay_element_links_f el,
pay_element_entries_f ee,
pay_element_entry_values_f eev
WHERE
ee.assignment_id IN (364018)
AND ee.element_link_id = el.element_link_id
AND sysdate BETWEEN el.effective_start_date
AND el.effective_end_date
AND ee.element_type_id = et.element_type_id
AND sysdate BETWEEN et.effective_start_date
AND et.effective_end_date
AND et.attribute_category = 'US Elements'
AND et.attribute1 = 'Y' --Interface to ProBusiness
AND ee.element_entry_id = eev.element_entry_id
AND sysdate BETWEEN eev.effective_start_date
AND eev.effective_end_date
AND eev.input_value_id = piv.input_value_id
AND sysdate BETWEEN piv.effective_start_date
AND piv.effective_end_date
AND eev.screen_entry_value IS NOT NULL
AND et.element_name IN ('HV Sign On Bonus','HV Retention Bonus','Relocation') --XX_HR_NONREC_ELEMENTS
AND piv.name IN('Vested 1 Date');
--AND TO_DATE(to_date(eev.screen_entry_value,'YYYY/MM/DD HH24:MI:SS'),'DD-MON-YYYY') BETWEEN P_START_DATE AND P_END_DATE;
dbms_output.put_line(p_screen_entry_value);
end;