Originally posted by amar
I would stick to VSIZE while trying to find out the number of bytes internally occupied by oracle to store a certain value.
This reminded me of another one from the world of Oracle puzzles.

It is well known fact that dates occupy 7 bytes of storage in Oracle RDBMS - one byte for each of the following date elements: century, year, month, day, hour, minute, and second.

So how come VSIZE() returns the following?

SQL> select vsize(sysdate) from dual;

VSIZE(SYSDATE)
--------------
8

So, is it 7 or 8 bytes for dates? Are the manuals wrong (no, they are not!)? Does VSIZE() sometimes return incorect value (no, it does not!)? Any takers to explain this?