Re: checking for a legal date with PL/SQL
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