Hello,
There is a chance that from where you are invoking sqlplus is having OS date different to that of the date set in the Unix machine where database actually resides.

Eg : There are 2 Unix machines A & B
B is where database(ABCD) resides..
A is where you invoke SQL+ as
sqlplus @ABCD.WORLD
In A it is set as '5 feb 2003'
In B it is set as '10 Feb 2003'.

Then when u give select sysdate from dual;Output would be '10 Feb2003'
But when you give
Sql>!date
5 feb 2003.

Confirm from select host_name from v$instance;

I don't know if I am throwing light or blowing light.
Jus' thinking from a different angle.that's all..

With lots of fun,
Chithra