Package org.apache.derby.client.am
Class DateTime
java.lang.Object
org.apache.derby.client.am.DateTime
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
FieldsModifier and TypeFieldDescriptionprivate static final int
private static final int
private static final int
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription(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 encodingprivate 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 formyyyy-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.
-
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 buffersupportsTimestampNanoseconds
- 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 formyyyy-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 dateoffset
- write into the buffer from this offsetdate
- date value- Returns:
- DateTime.dateRepresentationLength. This is the fixed length in bytes taken to represent the date value
- Throws:
SqlException
-
timeToTimeBytes
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 timeoffset
- write into the buffer from this offsettime
- 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 timestampoffset
- write into the buffer from this offsettimestamp
- timestamp valuesupportsTimestampNanoseconds
- 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
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 isyyyy-mm-dd-hh.mm.ss.fffffffff
. For Derby 10.5 and below, this isyyyy-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
-