Quick Search:
 
 Oracle PL/SQL: Dates: Oddball Stuff Jump to:  
Category: >> Oracle PL/SQL >> Dates: Oddball Stuff  

<< lastnext >>

Snippet Name: Dates: Oddball Stuff

Description: ANSI date-time datatypes and arithmetic can make life difficult and perplexing for the programmer. Notice some of these "gotchas".

Also see:
» ANSI Joins: FULL JOIN
» ANSI Joins: OUTER JOIN
» ANSI Joins: CROSS JOIN
» ANSI Joins: INNER JOIN

Comment: (none)

Language: PL/SQL
Highlight Mode: PLSQL
Last Modified: March 10th, 2009

ALTER session SET nls_date_format = 'YYYY-MM-DD';
 
-- old 
SELECT ADD_MONTHS(TO_DATE('2003-07-31','YYYY-MM-DD'),-1) FROM dual;
 
ADD_MONTHS
----------
2003-06-30
 
-- new
SELECT TO_TIMESTAMP('2003-07-31','YYYY-MM-DD') - INTERVAL '1' MONTH FROM dual;
 
ERROR AT line 1:
ORA-01839: DATE NOT valid FOR MONTH specified
 
-- old 
SELECT TO_DATE('2003-07-31','YYYY-MM-DD') - 100 FROM dual;
 
-- new (broken)
SELECT TO_TIMESTAMP('2003-07-31','YYYY-MM-DD') - INTERVAL '100' DAY FROM dual;
 
ERROR AT line 1:
ORA-01873: the leading precision OF the INTERVAL IS too small
 
-- new (note the extra "(3)")
SELECT TO_TIMESTAMP('2003-07-31','YYYY-MM-DD') - INTERVAL '100' DAY(3) FROM dual;
 
TO_TIMESTAMP('2003-07-31','YYYY-MM-DD')-INTERVAL'100'DAY(3)
-------------------------------------------------------------
2003-04-22 00:00:00
 


 
   Home |    Search |    Code Library |    Sponsors |    Privacy |    Terms of Use |    Contact Us © 2003 - 2024 psoug.org