A thin wrapper around java.util.Date that allows
the JDBC API to identify this as an SQL TIMESTAMP value.
It adds the ability
to hold the SQL TIMESTAMP fractional seconds value, by allowing
the specification of fractional seconds to a precision of nanoseconds.
A Timestamp also provides formatting and
parsing operations to support the JDBC escape syntax for timestamp values.
The precision of a Timestamp object is calculated to be either:
19 , which is the number of characters in yyyy-mm-dd hh:mm:ss
20 + s , which is the number
of characters in the yyyy-mm-dd hh:mm:ss.[fff...] and s represents the scale of the given Timestamp,
its fractional seconds precision.
Note: This type is a composite of a java.util.Date and a
separate nanoseconds value. Only integral seconds are stored in the
java.util.Date component. The fractional seconds - the nanos - are
separate. The Timestamp.equals(Object) method never returns
true when passed an object
that isn't an instance of java.sql.Timestamp,
because the nanos component of a date is unknown.
As a result, the Timestamp.equals(Object)
method is not symmetric with respect to the
java.util.Date.equals(Object)
method. Also, the hashCode method uses the underlying
java.util.Date
implementation and therefore does not include nanos in its computation.
Due to the differences between the Timestamp class
and the java.util.Date
class mentioned above, it is recommended that code not view
Timestamp values generically as an instance of
java.util.Date. The
inheritance relationship between Timestamp
and java.util.Date really
denotes implementation inheritance, and not type inheritance.
extends