Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como testar se a string de formato de data é uma string de formato de data válida no Oracle


você poderia criar uma função:

por exemplo:
FUNCTION is_valid_date_format ( 
    p_format IN VARCHAR2 ) 
RETURN BOOLEAN IS
    l_date VARCHAR2(100) := NULL;
BEGIN
    l_date := TO_char( sysdate, p_format );
    RETURN TRUE;
EXCEPTION
    WHEN OTHERS THEN
        RETURN FALSE;
END is_valid_date_format;

e use assim
IF is_valid_date_format('dd/mm/yyyy') THEN

no momento também permitirá formatos de hora, no entanto seria simples estendê-lo para não permitir um formato que contenha formatos indesejados, por exemplo:hh hh24 mis ss

adicionando:(você provavelmente desejará colocar sua string de formato em maiúsculas primeiro)
IF INSTR(p_format,'HH')>0 OR INSTR(p_format,'HH24')>0 
OR INSTR(p_format,'MI')>0  OR INSTR(p_format,'SS')>0 THEN
    RETURN FALSE
END IF;