Я пытаюсь выбрать из таблицы, используя в предложении where 2, переменные для фильтрации записей между диапазонами дат; две переменные имеют следующие значения:
START DATE: 31-MAR-2019 00:00:00 and END DATE: 17-FEB-2020 05:00:00
однако, если я использую переменные в предложении where как
value_dtime BETWEEN TO_DATE(Start_Date) AND TO_DATE(End_Date);
, я получу неправильный набор данных, тогда как если я изменю где предложение следующим образом
value_dtime BETWEEN TO_DATE('31-MAR-2019 00:00:00') AND TO_DATE('17-FEB-2020 05:00:00');
Я получил правильный набор данных; под запросом, который я использую.
DECLARE
Start_Date VARCHAR(20):='31-MAR-2019 00:00:00';
End_Date VARCHAR(20):= TO_CHAR(sysdate,'DD-MON-YYYY') || ' 05:00:00' ;
BEGIN
DBMS_OUTPUT.PUT_LINE('START DATE: ' || Start_Date || ' and END DATE: ' || End_Date);
delete from inputs;
INSERT INTO inputs(dataset_id,asset_id,asset_name,value_numeric,added_by,value_date)
SELECT
1, --value from LOOK_DATASETS table
v.meas_ass_id ,
a.meas_id ,
v.numeric_value ,
v.mod_user,
v.value_dtime
FROM
halo.t_meas_value@LNKHALO v
JOIN halo.t_meas_ass@LNKHALO a ON a.ass_id = v.meas_ass_id
WHERE
value_dtime BETWEEN TO_DATE(Start_Date) AND TO_DATE(End_Date);
END:
Может кто-нибудь сказать, пожалуйста, как получить мой правильный набор данных, используя 2 переменные, а не жестко закодированные строки даты?
Я использую oracle 12 C databae и SQL developer 19 как IDE