Re: checking for a legal date with PL/SQL

From: Lawrence Simela <lsimela_at_mahalini.prestel.co.uk>
Date: 1998/01/07
Message-ID: <6914v7$n5u$4_at_svr-c-01.core.theplanet.net>#1/1


Yup, TO_DATE() does know of leap years etc.

A simple function like:

CREATE OR REPLACE PACKAGE utils
AS

    FUNCTION valid_date( date_str IN VARCHAR2, format_str IN VARCHAR2)     RETURN BOOLEAN; END; CREATE OR REPLACE PACKAGE BODY utils
AS

    FUNCTION valid_date( date_str IN VARCHAR2, format_str IN VARCHAR2)     RETURN BOOLEAN
    IS

        dummy   DATE;
        ret_val BOOLEAN := FALSE;
        CURSOR csr_vdate(date_str IN VARCHAR2, format_str IN VARCHAR2)
        IS
        SELECT to_date(date_str, format_str)
          FROM dual;
    BEGIN
        OPEN csr_vdate(date_str, format_str);
        FETCH csr_vdate INTO dummy;
        CLOSE csr_vdate;
        ret_val := TRUE;
        RETURN ret_val;

    EXCEPTION
        WHEN OTHERS THEN
            /*
            ** We assume than any exception is due to an incorrect date
            */
            CLOSE csr_vdate;
            RETURN ret_val;

    END;
END; Usage:
IF utils.valid_date(date_str, 'DDMMYYYY') THEN

    blah blah
END IF; Note the function has not been compiled and tested but it should be okay.... Hope this helps

Lawrence Simela
MAHALINI CONSULTING LIMITED Michiel Betel wrote in message <34B380C4.DCA09C8C_at_cmg.nl>...
>Does anyone have a generic PL/SQL function to check if a date is legal?
>my website generates a 8 letter varchar in the form DDMMYYYY which i
>want to covert to a date using TO_DATE() but does TO_DATE know about
>leapyears and such?
>--
>
> \\\|///
> \\ - - //
> ( _at_ @ )
>------------oOOo-(_)-oOOo-------------------
> Groeten, Michiel
>-----------------------Oooo-----------------
> oooO ( )
> ( ) ) /
> \ ( (_/
> \_)
>
>
Received on Wed Jan 07 1998 - 00:00:00 CET

Original text of this message