Oracle достаточно умен, чтобы распознать строку с 0 или без него в формате даты.
Таким образом, вы можете напрямую преобразовать эту строку в TO_DATE('11/2/24', 'mm/dd/rrrr')
, а для распознавания текущего века вы можете использовать TRUNC
в век с использованием 'CC'
следующим образом:
SQL> SELECT
2 TO_DATE('11/2/24', 'mm/dd/rrrr') YOUR_DATE,
3 CASE
4 WHEN TRUNC(TO_DATE('11/2/24', 'mm/dd/rrrr'), 'CC') = TRUNC(SYSDATE, 'CC') THEN
5 'ACCEPT'
6 ELSE
7 'REJECT'
8 END RESULT
9 FROM
10 DUAL;
YOUR_DATE RESULT
----------- ------
02-NOV-2024 ACCEPT
SQL>
Результат запроса с другой датой прошлого века:
SQL> SELECT
2 TO_DATE('11/12/1996', 'mm/dd/rrrr') YOUR_DATE,
3 CASE
4 WHEN TRUNC(TO_DATE('11/12/1996', 'mm/dd/rrrr'), 'CC') = TRUNC(SYSDATE, 'CC') THEN
5 'ACCEPT'
6 ELSE
7 'REJECT'
8 END RESULT
9 FROM
10 DUAL;
YOUR_DATE RESULT
----------- ------
12-NOV-1996 REJECT
SQL>
Примечание : Я использовал 'rrrr'
для года, поскольку он преобразует любые два-di git лет в год, приходящийся на 1950-2049 гг.