We're using Oracle 9i (188.8.131.52) as our database, JDK 1.4.2, and Firestorm DAO to build our O/R mapping classes. The latest set of classes used java.sql.Date in queries to retrieve information from an Oracle DATE field, but I was forced to change it to use a java.sql.Timestamp instead. My understanding is Oracle DATE retains date and time info to the second, java.sql.Date to the millisecond, and java.sql.Timestamp (in theory) to the nanosecond. However, until I started using Timestamp, my DTOs all ended up with dates only, the time reset to midnight GMT. I'm confused. Why did that happen?