When it comes to handling date and time, Oracle PL/SQL is not as easy or convenient as Microsoft SQL. For instance, with MS SQL, you can write a query like:
SELECT * FROM SomeTable WHERE DateAdded = ’09-29-2006 08:00:00 AM’
But with PL/SQL, the above query will not run and will generate an error message like ‘not a valid month’. To make it work, you have to use “To_Date” function to convert the DateTime string to a DateTime value:
SELECT * FROM SomeTable WHERE DateAdded = to_date(’09-29-2006 08:00:00 AM’, ‘mm-dd-yyyy HH:MI:SS AM’)
The syntax for the to_date function is:
to_date( string1, [ format_mask ], [ nls_language ] )
string1 is the string that will be converted to a date.
format_mask is optional. This is the format that will be used to convert string1 to a date.
nls_language is optional. This is the nls language used to convert string1 to a date.
The following is a list of options for the format_mask parameter. These parameters can be used in many combinations.
Parameter Explanation YEAR Year, spelled out YYYY 4-digit year YYY
YY
YLast 3, 2, or 1 digit(s) of year. IYY
IY
ILast 3, 2, or 1 digit(s) of ISO year. IYYY 4-digit year based on the ISO standard RRRR Accepts a 2-digit year and returns a 4-digit year.
A value between 0-49 will return a 20xx year.
A value between 50-99 will return a 19xx year.Q Quarter of year (1, 2, 3, 4; JAN-MAR = 1). MM Month (01-12; JAN = 01). MON Abbreviated name of month. MONTH Name of month, padded with blanks to length of 9 characters. RM Roman numeral month (I-XII; JAN = I). WW Week of year (1-53) where week 1 starts on the first day of the year and continues to the seventh day of the year. W Week of month (1-5) where week 1 starts on the first day of the month and ends on the seventh. IW Week of year (1-52 or 1-53) based on the ISO standard. D Day of week (1-7). DAY Name of day. DD Day of month (1-31). DDD Day of year (1-366). DY Abbreviated name of day. J Julian day; the number of days since January 1, 4712 BC. HH Hour of day (1-12). HH12 Hour of day (1-12). HH24 Hour of day (0-23). MI Minute (0-59). SS Second (0-59). SSSSS Seconds past midnight (0-86399). FF Fractional seconds. Use a value from 1 to 9 after FF to indicate the number of digits in the fractional seconds. For example, ‘FF4’. AM, A.M., PM, or P.M. Meridian indicator AD or A.D AD indicator BC or B.C. BC indicator TZD Daylight savings information. For example, ‘PST’ TZH Time zone hour. TZM Time zone minute. TZR Time zone region.
For example:
to_date(‘2003/07/09’, ‘yyyy/mm/dd’) | would return a date value of July 9, 2003. |
to_date(‘070903’, ‘MMDDYY’) | would return a date value of July 9, 2003. |
to_date(‘20020315’, ‘yyyymmdd’) | would return a date value of Mar 15, 2002. |