java.io.Externalizable, java.io.Serializable, java.lang.Comparable, Formatable, Storable, TypedFormat, DataValueDescriptor, DateTimeDataValue, Orderablepublic final class SQLTimestamp extends DataType implements DateTimeDataValue
SQLTimestamp is stored in 3 ints - an encoded date, an encoded time and nanoseconds encodedDate = 0 indicates a null WSCTimestamp SQLTimestamp is similar to SQLTimestamp, but it does conserves space by not keeping a GregorianCalendar object PERFORMANCE OPTIMIZATION: We only instantiate the value field when required due to the overhead of the Date methods. Thus, use isNull() instead of "value == null" and getTimestamp() instead of using value directly.
| Modifier and Type | Field | Description |
|---|---|---|
private static int |
BASE_MEMORY_USAGE |
|
(package private) static char |
DATE_SEPARATOR |
|
private static char[] |
DATE_SEPARATORS |
|
private static char[] |
DATE_TIME_SEPARATORS |
|
private static char[] |
DATE_TIME_SEPARATORS_OR_END |
|
private int |
encodedDate |
|
private int |
encodedTime |
|
private static char[] |
END_OF_STRING |
|
(package private) static int |
FRACTION_TO_NANO |
|
private static char |
IBM_DATE_TIME_SEPARATOR |
|
private static char |
IBM_TIME_SEPARATOR |
|
(package private) static int |
MAX_FRACTION_DIGITS |
|
private int |
nanos |
|
private static char |
ODBC_DATE_TIME_SEPARATOR |
|
private static char |
ODBC_TIME_SEPARATOR |
|
(package private) static int |
ONE_BILLION |
|
private static char[] |
TIME_SEPARATORS |
|
private static char[] |
TIME_SEPARATORS_OR_END |
UNKNOWN_LOGICAL_LENGTHDAY_FIELD, DAY_INTERVAL, FRAC_SECOND_INTERVAL, HOUR_FIELD, HOUR_INTERVAL, MINUTE_FIELD, MINUTE_INTERVAL, MONTH_FIELD, MONTH_INTERVAL, QUARTER_INTERVAL, SECOND_FIELD, SECOND_INTERVAL, WEEK_INTERVAL, YEAR_FIELD, YEAR_INTERVALORDER_OP_EQUALS, ORDER_OP_GREATEROREQUALS, ORDER_OP_GREATERTHAN, ORDER_OP_LESSOREQUALS, ORDER_OP_LESSTHAN| Constructor | Description |
|---|---|
SQLTimestamp() |
no-arg constructor required by Formattable
|
SQLTimestamp(int encodedDate,
int encodedTime,
int nanos) |
|
SQLTimestamp(java.lang.String timestampStr,
boolean isJDBCEscape,
LocaleFinder localeFinder) |
Construct a timestamp from a string.
|
SQLTimestamp(java.lang.String timestampStr,
boolean isJDBCEscape,
LocaleFinder localeFinder,
java.util.Calendar cal) |
Construct a timestamp from a string.
|
SQLTimestamp(java.sql.Timestamp value) |
Create a new SQLTimestamp instance that represents the specified
Timestamp in the local time zone.
|
SQLTimestamp(java.sql.Timestamp value,
java.util.Calendar cal) |
Create a new SQLTimestamp instance that represents the specified
Timestamp in the time zone of the given Calendar.
|
SQLTimestamp(DataValueDescriptor date,
DataValueDescriptor time) |
| Modifier and Type | Method | Description |
|---|---|---|
private void |
addInternal(int calIntervalType,
int count,
SQLTimestamp tsResult) |
|
DataValueDescriptor |
cloneValue(boolean forceMaterialization) |
Clone this DataValueDescriptor.
|
boolean |
compare(int op,
DataValueDescriptor other,
boolean orderedNulls,
boolean unknownRV) |
Compare this Orderable with a given Orderable for the purpose of
qualification and sorting.
|
int |
compare(DataValueDescriptor other) |
Compare this Orderable with a given Orderable for the purpose of
index positioning.
|
private static int |
computeEncodedDate(java.util.Date value,
java.util.Calendar currentCal) |
computeEncodedDate sets the date in a Calendar object
and then uses the SQLDate function to compute an encoded date
The encoded date is
year << 16 + month << 8 + date
|
private static int |
computeEncodedTime(java.util.Date value,
java.util.Calendar currentCal) |
computeEncodedTime extracts the hour, minute and seconds from
a java.util.Date value and encodes them as
hour << 16 + minute << 8 + second
using the SQLTime function for encoding the data
|
static DateTimeDataValue |
computeTimestampFunction(DataValueDescriptor operand,
DataValueFactory dvf) |
Compute the SQL timestamp function.
|
int |
estimateMemoryUsage() |
Estimate the memory usage in bytes of the data value and the overhead of the class.
|
java.sql.Date |
getDate(java.util.Calendar cal) |
getDate returns the date portion of the timestamp
Time is set to 00:00:00.0
Since Date is a JDBC object we use the JDBC definition
for the time portion.
|
NumberDataValue |
getDate(NumberDataValue result) |
Get the day of the month.
|
NumberDataValue |
getHours(NumberDataValue result) |
Get the hour of the day out of a time or timestamp.
|
int |
getLength() |
Gets the length of the data value.
|
NumberDataValue |
getMinutes(NumberDataValue result) |
Get the minute of the hour out of a time or timestamp.
|
NumberDataValue |
getMonth(NumberDataValue result) |
Get the month number out of a date.
|
DataValueDescriptor |
getNewNull() |
Get a new null value of the same type as this data value.
|
java.lang.Object |
getObject() |
Gets the value in the data value descriptor as a int.
|
NumberDataValue |
getSeconds(NumberDataValue source) |
Get the second of the minute out of a time or timestamp.
|
java.lang.String |
getString() |
Gets the value in the data value descriptor as a String.
|
java.sql.Time |
getTime(java.util.Calendar cal) |
getTime returns the time portion of the timestamp
Date is set to 1970-01-01
Since Time is a JDBC object we use the JDBC definition
for the date portion.
|
java.sql.Timestamp |
getTimestamp(java.util.Calendar cal) |
Get the value field.
|
int |
getTypeFormatId() |
Return my format identifier.
|
java.lang.String |
getTypeName() |
Get the SQL name of the datatype
|
NumberDataValue |
getYear(NumberDataValue result) |
Get the year number out of a date.
|
int |
hashCode() |
|
boolean |
isNull() |
Check if the value is null.
|
(package private) NumberDataValue |
nullValueDouble() |
|
(package private) NumberDataValue |
nullValueInt() |
|
(package private) static int[] |
parseDateOrTimestamp(DateTimeParser parser,
boolean timeRequired) |
Parse a timestamp or a date.
|
(package private) static int |
parseDateTimeInteger(java.lang.String str,
int start,
int ndigits) |
|
(package private) static int[] |
parseLocalTimestamp(java.lang.String str,
LocaleFinder localeFinder,
java.util.Calendar cal) |
Parse a localized timestamp.
|
private void |
parseTimestamp(java.lang.String timestampStr,
boolean isJDBCEscape,
LocaleFinder localeFinder,
java.util.Calendar cal) |
|
(package private) static SQLTimestamp |
promote(DateTimeDataValue dateTime,
java.sql.Date currentDate) |
Promotes a DateTimeDataValue to a timestamp.
|
void |
readExternal(java.io.ObjectInput in) |
|
void |
restoreToNull() |
Restore this object to its (SQL)null value.
|
private void |
setCalendar(java.util.Calendar cal) |
|
protected void |
setFrom(DataValueDescriptor theValue) |
Set the value of this DataValueDescriptor based on the value
of the specified DataValueDescriptor.
|
void |
setInto(java.sql.PreparedStatement ps,
int position) |
Set this value into a PreparedStatement.
|
private void |
setNumericTimestamp(java.sql.Timestamp value,
java.util.Calendar cal) |
Set the encoded values for the timestamp
|
(package private) void |
setObject(java.lang.Object theValue) |
Set the value from a correctly typed Timestamp object.
|
void |
setValue(java.lang.String theValue) |
Set the value of this DataValueDescriptor.
|
void |
setValue(java.sql.Date value,
java.util.Calendar cal) |
Set the value of this DataValueDescriptor.
|
void |
setValue(java.sql.Timestamp value,
java.util.Calendar cal) |
Set the value of this DataValueDescriptor.
|
void |
setValueFromResultSet(java.sql.ResultSet resultSet,
int colNumber,
boolean isNullable) |
Set the value based on the value for the specified DataValueDescriptor
from the specified ResultSet.
|
DateTimeDataValue |
timestampAdd(int intervalType,
NumberDataValue count,
java.sql.Date currentDate,
DateTimeDataValue resultHolder) |
Add a number of intervals to a datetime value.
|
NumberDataValue |
timestampDiff(int intervalType,
DateTimeDataValue time1,
java.sql.Date currentDate,
NumberDataValue resultHolder) |
Finds the difference between two datetime values as a number of intervals.
|
java.lang.String |
toString() |
|
int |
typePrecedence() |
Each built-in type in JSQL has a precedence.
|
void |
writeExternal(java.io.ObjectOutput out) |
checkHostVariable, cloneHolder, coalesce, compare, compare, compareTo, dataTypeConversion, equals, equals, flip, genericSetObject, getBoolean, getByte, getBytes, getDouble, getFloat, getInt, getLong, getShort, getStream, getTraceString, getTypeName, greaterOrEquals, greaterThan, hasStream, in, invalidFormat, isNotNull, isNullOp, lessOrEquals, lessThan, normalize, notEquals, outOfRange, readExternalFromArray, recycle, setBigDecimal, setInto, setObjectForCast, setToNull, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, throwLangSetMismatch, throwLangSetMismatch, typeToBigDecimalcheckHostVariable, cloneHolder, coalesce, compare, compare, equals, getBoolean, getByte, getBytes, getDouble, getFloat, getInt, getLong, getShort, getStream, getTraceString, greaterOrEquals, greaterThan, hasStream, in, isNotNull, isNullOp, lessOrEquals, lessThan, normalize, notEquals, readExternalFromArray, recycle, setBigDecimal, setInto, setObjectForCast, setToNull, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, typeToBigDecimalstatic final int MAX_FRACTION_DIGITS
static final int FRACTION_TO_NANO
static final int ONE_BILLION
private int encodedDate
private int encodedTime
private int nanos
private static final int BASE_MEMORY_USAGE
static final char DATE_SEPARATOR
private static final char[] DATE_SEPARATORS
private static final char IBM_DATE_TIME_SEPARATOR
private static final char ODBC_DATE_TIME_SEPARATOR
private static final char[] DATE_TIME_SEPARATORS
private static final char[] DATE_TIME_SEPARATORS_OR_END
private static final char IBM_TIME_SEPARATOR
private static final char ODBC_TIME_SEPARATOR
private static final char[] TIME_SEPARATORS
private static final char[] TIME_SEPARATORS_OR_END
private static final char[] END_OF_STRING
public SQLTimestamp()
public SQLTimestamp(java.sql.Timestamp value,
java.util.Calendar cal)
throws StandardException
value - the Timestamp value to be represented by this instancecal - the time zone of the calendar is used to construct the
database timestamp valueStandardException - if an error occurspublic SQLTimestamp(java.sql.Timestamp value)
throws StandardException
value - the Timestamp value to be represented by this instanceStandardException - if an error occursSQLTimestamp(int encodedDate,
int encodedTime,
int nanos)
public SQLTimestamp(DataValueDescriptor date, DataValueDescriptor time) throws StandardException
StandardExceptionpublic SQLTimestamp(java.lang.String timestampStr,
boolean isJDBCEscape,
LocaleFinder localeFinder)
throws StandardException
StandardExceptionpublic SQLTimestamp(java.lang.String timestampStr,
boolean isJDBCEscape,
LocaleFinder localeFinder,
java.util.Calendar cal)
throws StandardException
StandardExceptionpublic int estimateMemoryUsage()
DataValueDescriptorestimateMemoryUsage in interface DataValueDescriptorpublic java.lang.String getString()
DataValueDescriptorgetString in interface DataValueDescriptorpublic java.sql.Date getDate(java.util.Calendar cal)
throws StandardException
getDate in interface DataValueDescriptorgetDate in class DataTypecal - calendar for object creationStandardException - thrown on failurepublic java.sql.Time getTime(java.util.Calendar cal)
throws StandardException
getTime in interface DataValueDescriptorgetTime in class DataTypecal - calendar for object creationStandardException - thrown on failurepublic java.lang.Object getObject()
DataTypegetObject in interface DataValueDescriptorgetObject in class DataTypepublic int getLength()
DataValueDescriptorgetLength in interface DataValueDescriptorpublic java.lang.String getTypeName()
DataValueDescriptorgetTypeName in interface DataValueDescriptorpublic int getTypeFormatId()
getTypeFormatId in interface TypedFormatTypedFormat.getTypeFormatId()public void writeExternal(java.io.ObjectOutput out)
throws java.io.IOException
writeExternal in interface java.io.Externalizablejava.io.IOException - error writing datapublic void readExternal(java.io.ObjectInput in)
throws java.io.IOException
readExternal in interface java.io.Externalizablejava.io.IOException - Thrown on error reading the objectExternalizable.readExternal(java.io.ObjectInput)public DataValueDescriptor cloneValue(boolean forceMaterialization)
DataValueDescriptor
Even though the objects can be modified independently regardless of the
value of forceMaterialization, both the clone and the
original may be dependent on the store state if
forceMaterialization is set to false. An example is if
you need to access the value you just read using cloneValue
after the current transaction has ended, or after the source result set
has been closed.
cloneValue in interface DataValueDescriptorforceMaterialization - any streams representing the data value will
be materialized if true, the data value will be kept as a
stream if possible if falseDataValueDescriptor with the same initial
value as this.DataValueDescriptor.cloneValue(boolean)public DataValueDescriptor getNewNull()
DataValueDescriptorgetNewNull in interface DataValueDescriptorDataValueDescriptor.getNewNull()public void restoreToNull()
StorablerestoreToNull in interface StorableStorable.restoreToNull()public void setValueFromResultSet(java.sql.ResultSet resultSet,
int colNumber,
boolean isNullable)
throws java.sql.SQLException,
StandardException
DataValueDescriptorsetValueFromResultSet in interface DataValueDescriptorresultSet - The specified ResultSet.colNumber - The 1-based column # into the resultSet.isNullable - Whether or not the column is nullable
(No need to call wasNull() if not)java.sql.SQLException - Thrown on errorStandardException - Thrown on errorDataValueDescriptor.setValueFromResultSet(java.sql.ResultSet, int, boolean)public int compare(DataValueDescriptor other) throws StandardException
DataValueDescriptorcompare in interface DataValueDescriptorother - The Orderable to compare this one to.StandardException - Thrown on errorpublic boolean compare(int op,
DataValueDescriptor other,
boolean orderedNulls,
boolean unknownRV)
throws StandardException
DataValueDescriptorcompare in interface DataValueDescriptorcompare in class DataTypeop - Orderable.ORDER_OP_EQUALS means do an = comparison.
Orderable.ORDER_OP_LESSTHAN means compare this < other.
Orderable.ORDER_OP_LESSOREQUALS means compare this <= other.other - The DataValueDescriptor to compare this one to.orderedNulls - True means to treat nulls as ordered values,
that is, treat SQL null as equal to null, and less
than all other values.
False means to treat nulls as unknown values,
that is, the result of any comparison with a null
is the UNKNOWN truth value.unknownRV - The return value to use if the result of the
comparison is the UNKNOWN truth value. In other
words, if orderedNulls is false, and a null is
involved in the comparison, return unknownRV.
This parameter is not used orderedNulls is true.StandardException - thrown on errorprivate void parseTimestamp(java.lang.String timestampStr,
boolean isJDBCEscape,
LocaleFinder localeFinder,
java.util.Calendar cal)
throws StandardException
StandardExceptionstatic int[] parseLocalTimestamp(java.lang.String str,
LocaleFinder localeFinder,
java.util.Calendar cal)
throws StandardException,
java.text.ParseException
str - the timestamp string, with trailing blanks removed.localeFinder - java.text.ParseException - If the string is not a valid timestamp.StandardExceptionstatic int[] parseDateOrTimestamp(DateTimeParser parser, boolean timeRequired) throws StandardException
parser - a DateTimeParser initialized with a string.timeRequired - If true then an error will be thrown if the time is missing. If false then the time may
be omitted.StandardException - if the syntax is incorrect for an IBM standard timestamp.void setObject(java.lang.Object theValue)
throws StandardException
setObject in class DataTypeStandardExceptionprotected void setFrom(DataValueDescriptor theValue) throws StandardException
DataTypesetFrom in class DataTypetheValue - The DataValueDescriptor that holds the value to
which we want to set this DataValueDescriptor's value.StandardExceptionpublic void setValue(java.sql.Date value,
java.util.Calendar cal)
throws StandardException
DataTypesetValue in interface DataValueDescriptorsetValue in class DataTypevalue - The Date value to set this DataValueDescriptor tocal - The time zone from the calendar is used to construct the database date valueStandardExceptionWhen converting from a date to a timestamp, time is set to 00:00:00.0public void setValue(java.sql.Timestamp value,
java.util.Calendar cal)
throws StandardException
DataTypesetValue in interface DataValueDescriptorsetValue in class DataTypevalue - The Timestamp value to set this DataValueDescriptor tocal - The time zone from the calendar is used to construct the database timestamp valueStandardExceptionDataValueDescriptor.setValue(int)public void setValue(java.lang.String theValue)
throws StandardException
DataTypesetValue in interface DataValueDescriptorsetValue in class DataTypetheValue - The BigDecimal value to set this DataValueDescriptor toStandardExceptionNumberDataValue nullValueInt()
NumberDataValue nullValueDouble()
public NumberDataValue getYear(NumberDataValue result) throws StandardException
DateTimeDataValuegetYear in interface DateTimeDataValueresult - The result of the previous call to this method, null
if not called yet.StandardException - Thrown on errorDateTimeDataValue.getYear(org.apache.derby.iapi.types.NumberDataValue)public NumberDataValue getMonth(NumberDataValue result) throws StandardException
DateTimeDataValuegetMonth in interface DateTimeDataValueresult - The result of the previous call to this method, null
if not called yet.StandardException - Thrown on errorDateTimeDataValue.getMonth(org.apache.derby.iapi.types.NumberDataValue)public NumberDataValue getDate(NumberDataValue result) throws StandardException
DateTimeDataValuegetDate in interface DateTimeDataValueresult - The result of the previous call to this method, null
if not called yet.StandardException - Thrown on errorDateTimeDataValue.getDate(org.apache.derby.iapi.types.NumberDataValue)public NumberDataValue getHours(NumberDataValue result) throws StandardException
DateTimeDataValuegetHours in interface DateTimeDataValueresult - The result of the previous call to this method, null
if not called yet.StandardException - Thrown on errorDateTimeDataValue.getHours(org.apache.derby.iapi.types.NumberDataValue)public NumberDataValue getMinutes(NumberDataValue result) throws StandardException
DateTimeDataValuegetMinutes in interface DateTimeDataValueresult - The result of the previous call to this method, null
if not called yet.StandardException - Thrown on errorDateTimeDataValue.getMinutes(org.apache.derby.iapi.types.NumberDataValue)public NumberDataValue getSeconds(NumberDataValue source) throws StandardException
DateTimeDataValuegetSeconds in interface DateTimeDataValuesource - The result of the previous call to this method, null
if not called yet.StandardException - Thrown on errorDateTimeDataValue.getSeconds(org.apache.derby.iapi.types.NumberDataValue)public java.lang.String toString()
toString in class java.lang.Objectpublic int hashCode()
hashCode in class java.lang.Objectpublic int typePrecedence()
DataTypetypePrecedence in interface DataValueDescriptortypePrecedence in class DataTypeDataValueDescriptor.typePrecedence()public final boolean isNull()
public java.sql.Timestamp getTimestamp(java.util.Calendar cal)
getTimestamp in interface DataValueDescriptorgetTimestamp in class DataTypecal - calendar for object creationprivate void setCalendar(java.util.Calendar cal)
private void setNumericTimestamp(java.sql.Timestamp value,
java.util.Calendar cal)
throws StandardException
StandardExceptionprivate static int computeEncodedDate(java.util.Date value,
java.util.Calendar currentCal)
throws StandardException
value - the value to convertStandardExceptionprivate static int computeEncodedTime(java.util.Date value,
java.util.Calendar currentCal)
throws StandardException
value - the value to convertStandardExceptionpublic void setInto(java.sql.PreparedStatement ps,
int position)
throws java.sql.SQLException,
StandardException
DataValueDescriptorsetInto in interface DataValueDescriptorsetInto in class DataTypejava.sql.SQLException - thrown by the PreparedStatement objectStandardException - thrown by me accessing my value.public static DateTimeDataValue computeTimestampFunction(DataValueDescriptor operand, DataValueFactory dvf) throws StandardException
StandardExceptionstatic int parseDateTimeInteger(java.lang.String str,
int start,
int ndigits)
throws StandardException
StandardExceptionpublic DateTimeDataValue timestampAdd(int intervalType, NumberDataValue count, java.sql.Date currentDate, DateTimeDataValue resultHolder) throws StandardException
timestampAdd in interface DateTimeDataValueintervalType - One of FRAC_SECOND_INTERVAL, SECOND_INTERVAL, MINUTE_INTERVAL, HOUR_INTERVAL,
DAY_INTERVAL, WEEK_INTERVAL, MONTH_INTERVAL, QUARTER_INTERVAL, or YEAR_INTERVALcount - The number of intervals to addcurrentDate - Used to convert time to timestampresultHolder - If non-null a DateTimeDataValue that can be used to hold the result. If null then
generate a new holderStandardExceptionprivate void addInternal(int calIntervalType,
int count,
SQLTimestamp tsResult)
throws StandardException
StandardExceptionpublic NumberDataValue timestampDiff(int intervalType, DateTimeDataValue time1, java.sql.Date currentDate, NumberDataValue resultHolder) throws StandardException
timestampDiff in interface DateTimeDataValueintervalType - One of FRAC_SECOND_INTERVAL, SECOND_INTERVAL, MINUTE_INTERVAL, HOUR_INTERVAL,
DAY_INTERVAL, WEEK_INTERVAL, MONTH_INTERVAL, QUARTER_INTERVAL, or YEAR_INTERVALtime1 - currentDate - Used to convert time to timestampresultHolder - If non-null a NumberDataValue that can be used to hold the result. If null then
generate a new holderStandardExceptionstatic SQLTimestamp promote(DateTimeDataValue dateTime, java.sql.Date currentDate) throws StandardException
StandardExceptionApache Derby V10.14 Internals - Copyright © 2004,2018 The Apache Software Foundation. All Rights Reserved.