quote from Sekhi:
----------------------------------------------------------------------
HI,
I need help in creating a PL/SQL Block which accepts DATE as input from the user & updates the date part to a DATE column retaining the earlier time part on that DATE column.
Thanks in advance,
Regards
Sekhi
----------------------------------------------------------------------
This is one way:SQL> CREATE TABLE t (id NUMBER, d DATE);
Table created.
SQL> INSERT INTO t VALUES (101, TO_DATE('01/31/2003 04:38:12 PM'
2 , 'MM/DD/YYYY HH:MI:SS AM'));
1 row created.
SQL> COMMIT;
Commit complete.
SQL> SELECT TO_CHAR(d
2 , 'fmMM/DD/YYYY HH12:fmMI:SS AM') db_date
3 FROM t;
DB_DATE
----------------------
1/31/2003 4:38:12 PM
SQL> BEGIN
2 UPDATE t
3 SET d = d
4 + (TRUNC(TO_DATE('&1'
5 , 'DD-MON-YYYY'))
6 -
7 TRUNC(d))
8 WHERE id = 101;
9 END;
10 /
Enter value for 1: 03-JUN-2003
old 4: + (TRUNC(TO_DATE('&1'
new 4: + (TRUNC(TO_DATE('03-JUN-2003'
PL/SQL procedure successfully completed.
SQL> SELECT TO_CHAR(d
2 , 'fmMM/DD/YYYY HH12:fmMI:SS AM') db_date
3 FROM t;
DB_DATE
----------------------
6/3/2003 4:38:12 PM
SQL> BEGIN
2 UPDATE t
3 SET d = d
4 + (TRUNC(TO_DATE('&1'
5 , 'DD-MON-YYYY'))
6 -
7 TRUNC(d))
8 WHERE id = 101;
9 END;
10 /
Enter value for 1: 11-DEC-2002
old 4: + (TRUNC(TO_DATE('&1'
new 4: + (TRUNC(TO_DATE('11-DEC-2002'
PL/SQL procedure successfully completed.
SQL> SELECT TO_CHAR(d
2 , 'fmMM/DD/YYYY HH12:fmMI:SS AM') db_date
3 FROM t;
DB_DATE
----------------------
12/11/2002 4:38:12 PM
SQL>
HTH,
A