Why is the result of reading a TIMESTAMP WITH TIME ZONE different?
The old behavior was incorrect. See bug 4322830. The old behavior was to construct a Timestamp that would print the same value as the database value. But since Timestamp is in the UTC time zone this would give a Timestamp value that was offset from the correct value. 8:00am January 1, 2007 UTC is not the same as 8:00am January 1, 2007 PST. They represent different points in time. If you read 8:00am January 1, 2007 PST in the database, the 9i and 10g drivers would construct a Timestamp with the value 8:00am January 1, 2007 UTC. This value would print “correctly”, that is it would print as “8:00am January 1, 2007”, but it obviously represented the wrong instant in time. The 11.1 drivers fix this bug.