Class DateTime

java.lang.Object
org.apache.derby.client.am.DateTime

public class DateTime extends Object
High performance converters from date/time byte encodings to JDBC Date, Time and Timestamp objects.

Using this class for direct date/time conversions from bytes offers superior performance over the alternative method of first constructing a Java String from the encoded bytes, and then using java.sql.Date.valueOf(), java.sql.Time.valueOf() or java.sql.Timestamp.valueOf().

  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private static final int
     
    private static final int
     
    private static final int
     
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    private
     
  • Method Summary

    Modifier and Type
    Method
    Description
    (package private) static final Date
    dateBytesToDate(byte[] buffer, int offset, Calendar recyclableCal, Charset encoding)
    Expected character representation is DERBY string representation of a date, which is in JIS format: yyyy-mm-dd
    (package private) static final Timestamp
    dateBytesToTimestamp(byte[] buffer, int offset, Calendar recyclableCal, Charset encoding)
    Expected character representation is DERBY string representation of a date which is in JIS format: yyyy-mm-dd
    static final int
    dateToDateBytes(byte[] buffer, int offset, DateTimeValue date)
    Date is converted to a char representation in JDBC date format: yyyy-mm-dd date format and then converted to bytes using UTF8 encoding
    private static Calendar
    getCleanCalendar(Calendar recyclableCal)
    Return a clean (i.e. all values cleared out) Calendar object that can be used for creating Time, Timestamp, and Date objects.
    static int
    getTimestampLength(boolean supportsTimestampNanoseconds)
    Return the length of a timestamp depending on whether timestamps should have full nanosecond precision or be truncated to just microseconds.
    private static int
    parseTimestampString(String timestamp, Calendar cal, boolean supportsTimestampNanoseconds)
    Parse a String of the form yyyy-mm-dd-hh.mm.ss.ffffff[fff] and store the various fields into the received Calendar object.
    (package private) static final Time
    timeBytesToTime(byte[] buffer, int offset, Calendar recyclableCal, Charset encoding)
    Expected character representation is DERBY string representation of time, which is in the format: hh.mm.ss
    (package private) static final Timestamp
    timeBytesToTimestamp(byte[] buffer, int offset, Calendar recyclableCal, Charset encoding)
    Expected character representation is DERBY string representation of time which is in the format: hh.mm.ss
    (package private) static final Date
    timestampBytesToDate(byte[] buffer, int offset, Calendar recyclableCal, Charset encoding)
    See getTimestampLength() for an explanation of how timestamps are formatted.
    (package private) static final Time
    timestampBytesToTime(byte[] buffer, int offset, Calendar recyclableCal, Charset encoding)
    See getTimestampLength() for an explanation of how timestamps are formatted.
    (package private) static final Timestamp
    timestampBytesToTimestamp(byte[] buffer, int offset, Calendar recyclableCal, Charset encoding, boolean supportsTimestampNanoseconds)
    See getTimestampLength() for an explanation of how timestamps are formatted.
    static final int
    timestampToTimestampBytes(byte[] buffer, int offset, DateTimeValue timestamp, boolean supportsTimestampNanoseconds)
    See getTimestampLength() for an explanation of how timestamps are formatted.
    static final int
    timeToTimeBytes(byte[] buffer, int offset, DateTimeValue time)
    java.sql.Time is converted to character representation which is in JDBC time escape format: hh:mm:ss, which is the same as JIS time format in DERBY string representation of a time.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • dateRepresentationLength

      private static final int dateRepresentationLength
      See Also:
    • timeRepresentationLength

      private static final int timeRepresentationLength
      See Also:
    • timestampRepresentationLength

      private static final int timestampRepresentationLength
      See Also:
  • Constructor Details

    • DateTime

      private DateTime()
  • Method Details

    • dateBytesToDate

      static final Date dateBytesToDate(byte[] buffer, int offset, Calendar recyclableCal, Charset encoding)
      Expected character representation is DERBY string representation of a date, which is in JIS format: yyyy-mm-dd
      Parameters:
      buffer -
      offset -
      recyclableCal -
      encoding - encoding of buffer data
      Returns:
      Date translated from buffer with specified encoding
    • timeBytesToTime

      static final Time timeBytesToTime(byte[] buffer, int offset, Calendar recyclableCal, Charset encoding)
      Expected character representation is DERBY string representation of time, which is in the format: hh.mm.ss
      Parameters:
      buffer -
      offset -
      recyclableCal -
      encoding - encoding of buffer
      Returns:
      Time translated from buffer with specified encoding
    • timestampBytesToTimestamp

      static final Timestamp timestampBytesToTimestamp(byte[] buffer, int offset, Calendar recyclableCal, Charset encoding, boolean supportsTimestampNanoseconds)
      See getTimestampLength() for an explanation of how timestamps are formatted.
      Parameters:
      buffer -
      offset -
      recyclableCal -
      encoding - encoding of buffer
      supportsTimestampNanoseconds - true if the server supports nanoseconds in timestamps
      Returns:
      TimeStamp translated from buffer with specified encoding
    • parseTimestampString

      private static int parseTimestampString(String timestamp, Calendar cal, boolean supportsTimestampNanoseconds)
      Parse a String of the form yyyy-mm-dd-hh.mm.ss.ffffff[fff] and store the various fields into the received Calendar object.
      Parameters:
      timestamp - Timestamp value to parse, as a String.
      cal - Calendar into which to store the parsed fields. Should not be null.
      supportsTimestampNanoseconds - true if the server supports nanoseconds in timestamps
      Returns:
      The nanoseconds field as parsed from the timestamp string. This cannot be set in the Calendar object but we still want to preserve the value, in case the caller needs it (for example, to create a java.sql.Timestamp with nanosecond precision).
    • dateToDateBytes

      public static final int dateToDateBytes(byte[] buffer, int offset, DateTimeValue date) throws SqlException
      Date is converted to a char representation in JDBC date format: yyyy-mm-dd date format and then converted to bytes using UTF8 encoding
      Parameters:
      buffer - bytes in UTF8 encoding of the date
      offset - write into the buffer from this offset
      date - date value
      Returns:
      DateTime.dateRepresentationLength. This is the fixed length in bytes taken to represent the date value
      Throws:
      SqlException
    • timeToTimeBytes

      public static final int timeToTimeBytes(byte[] buffer, int offset, DateTimeValue time)
      java.sql.Time is converted to character representation which is in JDBC time escape format: hh:mm:ss, which is the same as JIS time format in DERBY string representation of a time. The char representation is converted to bytes using UTF8 encoding.
      Parameters:
      buffer - bytes in UTF8 encoding of the time
      offset - write into the buffer from this offset
      time - java.sql.Time value
      Returns:
      DateTime.timeRepresentationLength. This is the fixed length in bytes taken to represent the time value
    • timestampToTimestampBytes

      public static final int timestampToTimestampBytes(byte[] buffer, int offset, DateTimeValue timestamp, boolean supportsTimestampNanoseconds) throws SqlException
      See getTimestampLength() for an explanation of how timestamps are formatted.
      Parameters:
      buffer - bytes in UTF8 encoding of the timestamp
      offset - write into the buffer from this offset
      timestamp - timestamp value
      supportsTimestampNanoseconds - true if the server supports nanoseconds in timestamps
      Returns:
      DateTime.timestampRepresentationLength. This is the fixed length in bytes, taken to represent the timestamp value
      Throws:
      SqlException
    • dateBytesToTimestamp

      static final Timestamp dateBytesToTimestamp(byte[] buffer, int offset, Calendar recyclableCal, Charset encoding)
      Expected character representation is DERBY string representation of a date which is in JIS format: yyyy-mm-dd
      Parameters:
      buffer -
      offset -
      recyclableCal -
      encoding - encoding of buffer
      Returns:
      Timestamp translated from buffer with specified encoding
    • timeBytesToTimestamp

      static final Timestamp timeBytesToTimestamp(byte[] buffer, int offset, Calendar recyclableCal, Charset encoding)
      Expected character representation is DERBY string representation of time which is in the format: hh.mm.ss
      Parameters:
      buffer -
      offset -
      recyclableCal -
      encoding - encoding of buffer
      Returns:
      Timestamp translated from buffer with specified encoding
    • timestampBytesToDate

      static final Date timestampBytesToDate(byte[] buffer, int offset, Calendar recyclableCal, Charset encoding)
      See getTimestampLength() for an explanation of how timestamps are formatted.
      Parameters:
      buffer -
      offset -
      recyclableCal -
      encoding - encoding of buffer
      Returns:
      Date translated from buffer with specified encoding
    • timestampBytesToTime

      static final Time timestampBytesToTime(byte[] buffer, int offset, Calendar recyclableCal, Charset encoding)
      See getTimestampLength() for an explanation of how timestamps are formatted.
      Parameters:
      buffer -
      offset -
      recyclableCal -
      encoding - encoding of buffer
      Returns:
      Time translated from buffer with specified Encoding
    • getCleanCalendar

      private static Calendar getCleanCalendar(Calendar recyclableCal)
      Return a clean (i.e. all values cleared out) Calendar object that can be used for creating Time, Timestamp, and Date objects. If the received Calendar object is non-null, then just clear that and return it.
      Parameters:
      recyclableCal - Calendar object to use if non-null.
    • getTimestampLength

      public static int getTimestampLength(boolean supportsTimestampNanoseconds)
      Return the length of a timestamp depending on whether timestamps should have full nanosecond precision or be truncated to just microseconds. java.sql.Timestamp is converted to a character representation which is a DERBY string representation of a timestamp converted to bytes using UTF8 encoding. For Derby 10.6 and above, this is yyyy-mm-dd-hh.mm.ss.fffffffff. For Derby 10.5 and below, this is yyyy-mm-dd-hh.mm.ss.ffffff. See DERBY-2602. and then converted to bytes using UTF8 encoding
      Parameters:
      supportsTimestampNanoseconds - true if the connection supports nanoseconds in timestamps