Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 1

Date Validation - Oracle SQL

Labels: PeopleSoft - Developer Posted by Ganesh on Monday, August 30, 2010 at 1:55 PM

In Peoplesoft where we read data from the files, especially for inbound interface , conversion and one time data load. Date is usually read as character field in different format and converted to date. We need to validate the date for further processing. It will be good if we can validate date field in SQL (set processing) than the validating using people code (row by row). Oracle doesn't have very useful function IsDate() not sure why. Lets see how we can do set processing for the date validation. 1) Regular expression came to my mind to check the pattern and validate the date easily. Select 'X' from dual Where REGEXP_LIKE ('1999-10-10','^(1920)\d\d[- /.](0[1-9]1[012])[- /.](0[1-9][12][0-9]3[01])$') This is simple regular expression which matches only the date format. It doesn't check for leap years and 30,31 days for all the months. 2) Select 'X' from dual Where NOT REGEXP_LIKE ('2009-2-29','^((((19|20)(([02468][048])([13579][26]))-02-29))((20[0-9][0-9])(19[0-9][0-9]))((((0[1-9])(1[0-2]))-((0[1-9])(1\d)(2[0-8])))((((0[13578])(1[02]))-31)(((0[1,3-9])(1[0-2]))-(2930)))))$') This regular expression is quite big difficult right every time correctly. Need to copy paste where ever it is requried. 3) if the regular expression is getting difficult, then can create a PL/SQL function and use that function in the sql to validate. we can use the above sql itself in the function. or use the following. function IsDate (str long) return boolean is the_Date date; begin the_date := to_date(str,'dd-mon-yyyy'); -- note the correction to date mask from what you had below RETURN true; -- conversion success exception when others then RETURN false; -- conversion failed end; In the Peoplesoft Implementation project we can create such function once and can be used in many SQL/Peoplecode/AE's. It is difficult to maintain this procedure in different instances like Dev,FIT,SIT,UAT,PPROD,PROD, but is it worth the effort.

You might also like