Как преобразовать дату из поля для сравнения по триггеру WHEN-VALIDATE-ITEM - PullRequest
0 голосов
/ 18 сентября 2018

Я работаю над приложением Oracle Forms.У меня есть поле с именем DOB, формат даты которого 08-May-1890.Я хотел бы преобразовать его в 18900508 на WHEN-VALIDATE-ITEM триггере для сравнения.

Я очень новичок в этом и не знаю, с чего начать.Ниже приведен код, с которым я сейчас работаю.

BEGIN
    --Convert date from 08-May-1890 to 1890508
    IF( TO_CHAR(:EMPLOYEE.DOB,'YYYY-MON-DD') < 20180927)THEN
        --Do Something in here
        RAISE FORM_TRIGGER_FAILURE;
    END IF;
END;

1 Ответ

0 голосов
/ 18 сентября 2018

Если employee.dob является строкой, преобразовать ее в дату, затем в строку, а значением сравнения должна быть строка:

BEGIN
    --Convert date from 08-May-1890 to 1890508
    IF( TO_CHAR(TO_DATE(:EMPLOYEE.DOB,'YYYYMONDD', 'NLS_DATE_LANGUAGE = English'),'YYYYMMDD') < '20180927' )THEN
        --Do Something in here
        RAISE FORM_TRIGGER_FAILURE;
    END IF;
END;

, если employee.dob уже является датой и сравнивается со строкой:

BEGIN
    --Convert date from 08-May-1890 to 1890508
    IF( TO_CHAR(:EMPLOYEE.DOB,'YYYYMMDD') < '20180927' )THEN
        --Do Something in here
        RAISE FORM_TRIGGER_FAILURE;
    END IF;
END;

Но если employee.dob является столбцом даты, то не преобразует его в строку, вместо этого сравните его с датой

BEGIN
    --Convert date from 08-May-1890 to 1890508
    IF :EMPLOYEE.DOB < to_date('20180927','YYYYMMDD') )THEN
        --Do Something in here
        RAISE FORM_TRIGGER_FAILURE;
    END IF;
END;
...