I 'm not sure why you would be subtracting 1000 from the bad date, even if
you were actually subtracting years and not days. If I 'm understanding you,
you really want to subtract 100 years from the bad dates. Try this: update
custtable set crdate = add_months(crdate, -(12*100));
Script started on Tue Mar 23 17:25:31 2004
$ sqlplus /
SQL*Plus: Release 8.1.7.0.0 - Production on Tue Mar 23 17:25:33 2004
(c) Copyright 2000 Oracle Corporation. All rights reserved.
Connected to:
Oracle8i Release 8.1.7.2.0 - Production
JServer Release 8.1.7.2.0 - Production
SQL > set lines 132 pages 50000
SQL > alter session set nls_date_format = 'MM/DD/YYYY HH24:MI:SS ';
SQL > exit
Disconnected from Oracle8i Release 8.1.7.2.0 - Production
JServer Release 8.1.7.2.0 - Production
$
script done on Tue Mar 23 17:27:09 2004
-- -- Original Message -- --
From: "Barbara Baker " <barbarabbaker@(protected) >
To: <oracle-l@(protected) >
Sent: Tuesday, March 23, 2004 3:00 PM
Subject: update year in date column
OK, I 'm just going to bite the bullet and claim total
ignorance here and see if someone takes pity on me :(
(sad face a nice touch, eh?)
Someone has accidently updated 378 records in the
customer table. The date changed from 1999 to 2099.
I need to change just the year back to 1999 for these
records. (I 'd like to keep the time stamp, if
possible. The month and day are correct.) I looked
on metalink, google, and asktom. Some nice examples,
but not what I really need.
Thought I 'd be clever and subtract 1000 from the date.
This works, but I don 't know how to get it formatted
back into a date.
I 'd prefer just sqlplus, but will use pl/sql if
necessary.
Here 's what I 've done so far:
(solaris 9 oracle 9.2.0.4)