|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectorg.apache.derby.iapi.types.DataType
org.apache.derby.iapi.types.SQLTime
public final class SQLTime
This contains an instance of a SQL Time Our current implementation doesn't implement time precision so the fractional seconds portion of the time is always 0. The default when no time precision is specified is 0 fractional seconds. A SQL Time without timezone information is assumed to be in the local time zone. The local time is stored as is and doesn't change if the timezone changes. This is in conformance with the SQL99 standard. The SQL92 standard indicates that the time is in GMT and changes with the timezone. The SQL99 standard clarifies this to allow time without timezoned to be stored as the local time.
Time is stored as two ints. The first int represents hour, minute, second and the second represents fractional seconds (currently 0 since we don't support time precision) encodedTime = -1 indicates null PERFORMANCE OPTIMIZATION: The java.sql.Time object is only instantiated on demand for performance reasons.
| Field Summary | |
|---|---|
private static java.lang.String[] |
AM_PM
|
private static char[] |
ANY_SEPARATOR
|
private static int |
BASE_MEMORY_USAGE
|
private int |
encodedTime
|
private int |
encodedTimeFraction
|
private static char[] |
END_OF_STRING
|
private static char |
IBM_EUR_SEPARATOR
|
private static char[] |
IBM_EUR_SEPARATOR_OR_END
|
(package private) static char |
JIS_SEPARATOR
|
private static char[] |
US_OR_JIS_MINUTE_END
|
| Fields inherited from interface org.apache.derby.iapi.types.DateTimeDataValue |
|---|
DAY_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_INTERVAL |
| Fields inherited from interface org.apache.derby.iapi.types.DataValueDescriptor |
|---|
UNKNOWN_LOGICAL_LENGTH |
| Fields inherited from interface org.apache.derby.iapi.types.Orderable |
|---|
ORDER_OP_EQUALS, ORDER_OP_GREATEROREQUALS, ORDER_OP_GREATERTHAN, ORDER_OP_LESSOREQUALS, ORDER_OP_LESSTHAN |
| Constructor Summary | |
|---|---|
|
SQLTime()
no-arg constructor required by Formattable |
private |
SQLTime(int encodedTime,
int encodedTimeFraction)
|
|
SQLTime(java.lang.String timeStr,
boolean isJdbcEscape,
LocaleFinder localeFinder)
Construct a time from a string. |
|
SQLTime(java.lang.String timeStr,
boolean isJdbcEscape,
LocaleFinder localeFinder,
java.util.Calendar cal)
Construct a time from a string. |
|
SQLTime(java.sql.Time value)
|
| Method Summary | |
|---|---|
DataValueDescriptor |
cloneValue(boolean forceMaterialization)
Clone this DataValueDescriptor. |
int |
compare(DataValueDescriptor other)
Orderable interface |
boolean |
compare(int op,
DataValueDescriptor other,
boolean orderedNulls,
boolean unknownRV)
Compare this Orderable with a given Orderable for the purpose of qualification and sorting. |
(package private) static int |
computeEncodedTime(java.util.Calendar cal)
Calculate the encoded time from a Calendar object encoded time is hour << 16 + min << 8 + sec this function is also used by SQLTimestamp |
private int |
computeEncodedTime(java.util.Date value)
Compute encoded time value Time is represented by hour << 16 + minute << 8 + seconds |
(package private) static int |
computeEncodedTime(java.util.Date value,
java.util.Calendar currentCal)
|
(package private) static int |
computeEncodedTime(int hour,
int minute,
int second)
|
protected static java.lang.String |
encodedTimeToString(int encodedTime)
Get the String version from the encodedTime. |
int |
estimateMemoryUsage()
Estimate the memory usage in bytes of the data value and the overhead of the class. |
NumberDataValue |
getDate(NumberDataValue result)
Get the day of the month. |
(package private) int |
getEncodedTime()
|
protected static int |
getHour(int encodedTime)
Get the encoded hour value (may be different than hour value for current timezone if value encoded in a different timezone) |
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. |
protected static int |
getMinute(int encodedTime)
Get the encoded minute value (may be different than the minute value for current timezone if value encoded in a different timezone) |
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. |
protected static int |
getSecond(int encodedTime)
Get the encoded second value (may be different than the second value for current timezone if value encoded in a different timezone) |
NumberDataValue |
getSeconds(NumberDataValue result)
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)
Get the time value Since this is a JDBC object we use the JDBC definition we use the JDBC definition, see JDBC API Tutorial and Reference section 47.3.12 Date is set to Jan. 1, 1970 |
(package private) static java.sql.Time |
getTime(java.util.Calendar cal,
int encodedTime,
int nanos)
Get a java.sql.Time object from an encoded time and nano-second value. |
java.sql.Timestamp |
getTimestamp(java.util.Calendar cal)
Convert a SQL TIME to a JDBC java.sql.Timestamp. |
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 |
nullValueInt()
|
private void |
parseTime(java.util.Date value)
|
private void |
parseTime(java.lang.String timeStr,
boolean isJdbcEscape,
LocaleFinder localeFinder,
java.util.Calendar cal)
|
void |
readExternal(java.io.ObjectInput in)
|
void |
restoreToNull()
Restore this object to its (SQL)null value. |
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)
Adding this method to ensure that super class' setInto method doesn't get called that leads to the violation of JDBC spec( untyped nulls ) when batching is turned on. |
(package private) void |
setObject(java.lang.Object theValue)
Set the value from a correctly typed Time object. |
(package private) static void |
setTimeInCalendar(java.util.Calendar cal,
int encodedTime)
Set the time portion of a date-time value into the passed in Calendar object from its encodedTime value. |
void |
setValue(java.lang.String theValue)
Set the value of this DataValueDescriptor. |
void |
setValue(java.sql.Time 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 intervalCount,
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. |
(package private) static void |
timeToString(int hour,
int minute,
int second,
java.lang.StringBuffer sb)
Convert a time to a JDBC escape format string |
java.lang.String |
toString()
|
private SQLTimestamp |
toTimestamp(java.sql.Date currentDate)
|
int |
typePrecedence()
Each built-in type in JSQL has a precedence. |
void |
writeExternal(java.io.ObjectOutput out)
|
| Methods inherited from class org.apache.derby.iapi.types.DataType |
|---|
checkHostVariable, cloneHolder, coalesce, compare, compare, compareTo, dataTypeConversion, equals, equals, flip, genericSetObject, getBoolean, getByte, getBytes, getDate, 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, typeToBigDecimal |
| Methods inherited from class java.lang.Object |
|---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
| Methods inherited from interface org.apache.derby.iapi.types.DataValueDescriptor |
|---|
checkHostVariable, cloneHolder, coalesce, compare, compare, equals, getBoolean, getByte, getBytes, getDate, 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, typeToBigDecimal |
| Field Detail |
|---|
private int encodedTime
private int encodedTimeFraction
private static final int BASE_MEMORY_USAGE
private static final char IBM_EUR_SEPARATOR
private static final char[] IBM_EUR_SEPARATOR_OR_END
static final char JIS_SEPARATOR
private static final char[] US_OR_JIS_MINUTE_END
private static final char[] ANY_SEPARATOR
private static final java.lang.String[] AM_PM
private static final char[] END_OF_STRING
| Constructor Detail |
|---|
public SQLTime()
public SQLTime(java.sql.Time value)
throws StandardException
StandardException
private SQLTime(int encodedTime,
int encodedTimeFraction)
public SQLTime(java.lang.String timeStr,
boolean isJdbcEscape,
LocaleFinder localeFinder)
throws StandardException
Standard - exception if the syntax is invalid or the value is out of range.
StandardException
public SQLTime(java.lang.String timeStr,
boolean isJdbcEscape,
LocaleFinder localeFinder,
java.util.Calendar cal)
throws StandardException
Standard - exception if the syntax is invalid or the value is out of range.
StandardException| Method Detail |
|---|
public int estimateMemoryUsage()
DataValueDescriptor
estimateMemoryUsage in interface DataValueDescriptorpublic java.lang.String getString()
DataValueDescriptor
getString in interface DataValueDescriptorint getEncodedTime()
public java.sql.Timestamp getTimestamp(java.util.Calendar cal)
getTimestamp in interface DataValueDescriptorgetTimestamp in class DataTypecal - calendar for object creation
public java.lang.Object getObject()
DataType
getObject in interface DataValueDescriptorgetObject in class DataTypepublic int getLength()
DataValueDescriptor
getLength in interface DataValueDescriptorpublic java.lang.String getTypeName()
DataValueDescriptor
getTypeName 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 data
public 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 false
DataValueDescriptor with the same initial
value as this.DataValueDescriptor.cloneValue(boolean)public DataValueDescriptor getNewNull()
DataValueDescriptor
getNewNull in interface DataValueDescriptorDataValueDescriptor.getNewNull()public void restoreToNull()
Storable
restoreToNull in interface StorableStorable.restoreToNull()
public void setValueFromResultSet(java.sql.ResultSet resultSet,
int colNumber,
boolean isNullable)
throws java.sql.SQLException,
StandardException
DataValueDescriptor
setValueFromResultSet 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 error
StandardException - Thrown on errorDataValueDescriptor.setValueFromResultSet(java.sql.ResultSet, int, boolean)
public int compare(DataValueDescriptor other)
throws StandardException
compare in interface DataValueDescriptorother - The Orderable to compare this one to.
StandardException - thrown on failureOrderable
public boolean compare(int op,
DataValueDescriptor other,
boolean orderedNulls,
boolean unknownRV)
throws StandardException
DataValueDescriptor
compare 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 error
private void parseTime(java.util.Date value)
throws StandardException
StandardException
private void parseTime(java.lang.String timeStr,
boolean isJdbcEscape,
LocaleFinder localeFinder,
java.util.Calendar cal)
throws StandardException
StandardException
void setObject(java.lang.Object theValue)
throws StandardException
setObject in class DataTypeStandardException
protected void setFrom(DataValueDescriptor theValue)
throws StandardException
DataType
setFrom in class DataTypetheValue - The DataValueDescriptor that holds the value to
which we want to set this DataValueDescriptor's value.
StandardException
public void setValue(java.sql.Time value,
java.util.Calendar cal)
throws StandardException
DataType
setValue in interface DataValueDescriptorsetValue in class DataTypevalue - The Time value to set this DataValueDescriptor tocal - The time zone from the calendar is used to construct the database time value
StandardException - thrown on failure.DataValueDescriptor.setValue(int)
public void setValue(java.sql.Timestamp value,
java.util.Calendar cal)
throws StandardException
DataType
setValue 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 value
StandardException - thrown on failure.DataValueDescriptor.setValue(int)
public void setValue(java.lang.String theValue)
throws StandardException
DataType
setValue in interface DataValueDescriptorsetValue in class DataTypetheValue - The BigDecimal value to set this DataValueDescriptor to
StandardExceptionNumberDataValue nullValueInt()
public NumberDataValue getYear(NumberDataValue result)
throws StandardException
DateTimeDataValue
getYear 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
DateTimeDataValue
getMonth 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
DateTimeDataValue
getDate 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
DateTimeDataValue
getHours 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
DateTimeDataValue
getMinutes 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 result)
throws StandardException
DateTimeDataValue
getSeconds in interface DateTimeDataValueresult - 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()
DataType
typePrecedence in interface DataValueDescriptortypePrecedence in class DataTypeDataValueDescriptor.typePrecedence()public final boolean isNull()
isNull in interface Storablepublic java.sql.Time getTime(java.util.Calendar cal)
getTime in interface DataValueDescriptorgetTime in class DataTypecal - calendar for object creation
static void setTimeInCalendar(java.util.Calendar cal,
int encodedTime)
static java.sql.Time getTime(java.util.Calendar cal,
int encodedTime,
int nanos)
cal - Calendar to use for conversionencodedTime - Derby encoded time valuenanos - number of nano-seconds.
protected static int getHour(int encodedTime)
protected static int getMinute(int encodedTime)
protected static int getSecond(int encodedTime)
static int computeEncodedTime(java.util.Calendar cal)
throws StandardException
cal - calendar with time set
StandardException - if the time is not in the DB2 range
static int computeEncodedTime(int hour,
int minute,
int second)
throws StandardException
StandardException
static void timeToString(int hour,
int minute,
int second,
java.lang.StringBuffer sb)
hour - minute - second - sb - The resulting string is appended to this StringBufferprotected static java.lang.String encodedTimeToString(int encodedTime)
private int computeEncodedTime(java.util.Date value)
throws StandardException
StandardException
static int computeEncodedTime(java.util.Date value,
java.util.Calendar currentCal)
throws StandardException
StandardException
public void setInto(java.sql.PreparedStatement ps,
int position)
throws java.sql.SQLException,
StandardException
setInto in interface DataValueDescriptorsetInto in class DataTypejava.sql.SQLException - thrown by the PreparedStatement object
StandardException - thrown by me accessing my value.
public DateTimeDataValue timestampAdd(int intervalType,
NumberDataValue intervalCount,
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_INTERVALintervalCount - 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 holder
StandardException
private SQLTimestamp toTimestamp(java.sql.Date currentDate)
throws StandardException
StandardException
public 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 holder
StandardException
|
Built on Wed 2013-06-12 15:21:56+0000, from revision ??? | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||