Top Description Fields Constructors Methods
org.apache.derby.iapi.types

public final Class SQLDate

extends DataType
implements DateTimeDataValue
Class Inheritance
All Implemented Interfaces
org.apache.derby.iapi.types.DateTimeDataValue, org.apache.derby.iapi.types.DataValueDescriptor, org.apache.derby.iapi.types.Orderable, org.apache.derby.iapi.services.io.Storable, org.apache.derby.iapi.services.io.Formatable, org.apache.derby.iapi.services.io.TypedFormat, java.io.Externalizable, java.io.Serializable
Imports
org.apache.derby.shared.common.reference.SQLState, org.apache.derby.shared.common.error.StandardException, org.apache.derby.iapi.db.DatabaseContext, org.apache.derby.iapi.services.context.ContextService, org.apache.derby.iapi.services.io.StoredFormatIds, org.apache.derby.shared.common.sanity.SanityManager, org.apache.derby.iapi.services.cache.ClassSize, org.apache.derby.shared.common.i18n.LocaleFinder, org.apache.derby.iapi.util.StringUtil, java.sql.Date, .Timestamp, .PreparedStatement, .ResultSet, .SQLException, java.util.Calendar, .GregorianCalendar, java.io.ObjectOutput, .ObjectInput, .IOException, java.text.DateFormat, .ParseException

This contains an instance of a SQL Date.

The date is stored as int (year << 16 + month << 8 + day) Null is represented by an encodedDate value of 0. Some of the static methods in this class are also used by SQLTime and SQLTimestamp so check those classes if you change the date encoding PERFORMANCE OPTIMIZATION: The java.sql.Date object is only instantiated when needed do to the overhead of Date.valueOf(), etc. methods.

Field Summary

Modifier and TypeField and Description
private static final int
private int
private static final char[]
private static final char
private static final char[]
private static final char
private static final char[]
pack-priv static final char
private static final char[]

Constructor Summary

AccessConstructor and Description
public
SQLDate()

no-arg constructor required by Formattable

public
SQLDate(Date value)

private
SQLDate(int encodedDate)

public
SQLDate(String dateStr, boolean
if true then only the JDBC date escape syntax is allowed
isJdbcEscape
,
LocaleFinder localeFinder)

Construct a date from a string.

public
SQLDate(String dateStr, boolean
if true then only the JDBC date escape syntax is allowed
isJdbcEscape
,
LocaleFinder localeFinder, Calendar cal)

Construct a date from a string.

Method Summary

Modifier and TypeMethod and Description
public DataValueDescriptor
cloneValue(boolean
any streams representing the data value will be materialized if true, the data value will be kept as a stream if possible if false
forceMaterialization
)

Implements org.apache.derby.iapi.types.DataValueDescriptor.cloneValue.

Clone this DataValueDescriptor.

public int
compare(DataValueDescriptor
The Orderable to compare this one to.
other
)

Implements org.apache.derby.iapi.types.DataValueDescriptor.compare.

Orderable interface

public boolean
compare(int
Orderable.ORDER_OP_EQUALS means do an = comparison. Orderable.ORDER_OP_LESSTHAN means compare this < other. Orderable.ORDER_OP_LESSOREQUALS means compare this <= other.
op
,
DataValueDescriptor
The DataValueDescriptor to compare this one to.
other
,
boolean
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.
orderedNulls
,
boolean
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.
unknownRV
)

Overrides org.apache.derby.iapi.types.DataType.compare.

Implements org.apache.derby.iapi.types.DataValueDescriptor.compare.

Compare this Orderable with a given Orderable for the purpose of qualification and sorting.

public static DateTimeDataValue
computeDateFunction(DataValueDescriptor
Must be a date or a string convertible to a date.
operand
,
DataValueFactory
the DataValueFactory
dvf
)

Implement the date SQL function: construct a SQL date from a string, number, or timestamp.

pack-priv static int

Returns:

the encodedDate
computeEncodedDate
(Calendar
the Calendar
cal
)

computeEncodedDate extracts the year, month and date from a Calendar value and encodes them as year << 16 + month << 8 + date Use this function will help to remember to add 1 to month which is 0 based in the Calendar class

pack-priv static int
computeEncodedDate(int y, int m, int d)

private static int
computeEncodedDate(Date value)

Compute the encoded date given a date

pack-priv static int
computeEncodedDate(Date value, Calendar currentCal)

pack-priv static void
dateToString(int year, int
1 based (January == 1)
month
,
int day, StringBuffer
The string representation is appended to this StringBuffer
sb
)

Convert a date to the JDBC representation and append it to a string buffer.

pack-priv static String

Returns:

string value.
encodedDateToString
(int encodedDate)

Get the String version from the encodedDate.

public int
estimateMemoryUsage()

Implements org.apache.derby.iapi.types.DataValueDescriptor.estimateMemoryUsage.

Estimate the memory usage in bytes of the data value and the overhead of the class.

public NumberDataValue
getDate(NumberDataValue
The result of the previous call to this method, null if not called yet.
result
)

Implements org.apache.derby.iapi.types.DateTimeDataValue.getDate.

Get the day of the month.

public Date

Returns:

The value field.
getDate
(Calendar
calendar for object creation
cal
)

Overrides org.apache.derby.iapi.types.DataType.getDate.

Implements org.apache.derby.iapi.types.DataValueDescriptor.getDate.

Get the value field.

pack-priv static int

Returns:

day value.
getDay
(int
the encoded date
encodedDate
)

Get the day from the encodedDate.

pack-priv int
public NumberDataValue
getHours(NumberDataValue
The result of the previous call to this method, null if not called yet.
result
)

Implements org.apache.derby.iapi.types.DateTimeDataValue.getHours.

Get the hour of the day out of a time or timestamp.

public int
getLength()

Implements org.apache.derby.iapi.types.DataValueDescriptor.getLength.

Gets the length of the data value.

public NumberDataValue
getMinutes(NumberDataValue
The result of the previous call to this method, null if not called yet.
result
)

Implements org.apache.derby.iapi.types.DateTimeDataValue.getMinutes.

Get the minute of the hour out of a time or timestamp.

public NumberDataValue
getMonth(NumberDataValue
The result of the previous call to this method, null if not called yet.
result
)

Implements org.apache.derby.iapi.types.DateTimeDataValue.getMonth.

Get the month number out of a date.

pack-priv static int

Returns:

month value.
getMonth
(int
the encoded date
encodedDate
)

Get the month from the encodedDate, January is one.

public DataValueDescriptor
getNewNull()

Implements org.apache.derby.iapi.types.DataValueDescriptor.getNewNull.

Get a new null value of the same type as this data value.

public Object
public NumberDataValue
getSeconds(NumberDataValue
The result of the previous call to this method, null if not called yet.
result
)

Implements org.apache.derby.iapi.types.DateTimeDataValue.getSeconds.

Get the second of the minute out of a time or timestamp.

public String
getString()

Implements org.apache.derby.iapi.types.DataValueDescriptor.getString.

Gets the value in the data value descriptor as a String.

private long
getTimeInMillis(Calendar cal)

Convert the date into a milli-seconds since the epoch with the time set to 00:00 based upon the passed in Calendar.

public Timestamp
getTimestamp(Calendar
calendar for object creation
cal
)

Overrides org.apache.derby.iapi.types.DataType.getTimestamp.

Implements org.apache.derby.iapi.types.DataValueDescriptor.getTimestamp.

getTimestamp returns a timestamp with the date value time is set to 00:00:00.0

public int
public String
getTypeName()

Implements org.apache.derby.iapi.types.DataValueDescriptor.getTypeName.

Get the SQL name of the datatype

public NumberDataValue
getYear(NumberDataValue
The result of the previous call to this method, null if not called yet.
result
)

Implements org.apache.derby.iapi.types.DateTimeDataValue.getYear.

Get the year number out of a date.

pack-priv static int

Returns:

year value.
getYear
(int
the encoded date
encodedDate
)

Get the year from the encodedDate.

public int
hashCode()

Overrides java.lang.Object.hashCode.

Returns a hash code value for this object.

public final boolean

Returns:

Whether or not value is logically null.
isNull
()

Implements org.apache.derby.iapi.services.io.Storable.isNull.

Check if the value is null.

pack-priv NumberDataValue
private void
parseDate(Date value)

private void
parseDate(String dateStr, boolean isJdbcEscape, LocaleFinder localeFinder, Calendar cal)

public void
readExternal(ObjectInput
the stream to read data from in order to restore the object
in
)

Implements java.io.Externalizable.readExternal.

The object implements the readExternal method to restore its contents by calling the methods of DataInput for primitive types and readObject for objects, strings and arrays.

public void
restoreToNull()

Implements org.apache.derby.iapi.services.io.Storable.restoreToNull.

Restore this object to its (SQL)null value.

pack-priv static void
setDateInCalendar(Calendar cal, int encodedDate)

Set the date portion of a date-time value into the passed in Calendar object from its encodedDate value.

protected void
setFrom(DataValueDescriptor
The DataValueDescriptor that holds the value to which we want to set this DataValueDescriptor's value.
theValue
)

Overrides org.apache.derby.iapi.types.DataType.setFrom.

Set the value of this DataValueDescriptor based on the value of the specified DataValueDescriptor.

public void
setInto(PreparedStatement ps, int position)

Overrides org.apache.derby.iapi.types.DataType.setInto.

Implements org.apache.derby.iapi.types.DataValueDescriptor.setInto.

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.

pack-priv void
setObject(Object theValue)

Overrides org.apache.derby.iapi.types.DataType.setObject.

Set the value from a correctly typed Date object.

pack-priv static NumberDataValue
setSource(int value, NumberDataValue source)

This helper routine tests the nullability of various parameters and sets up the result appropriately.

public void
setValue(Date
The Date value to set this DataValueDescriptor to
value
,
Calendar
The time zone from the calendar is used to construct the database date value
cal
)

Overrides org.apache.derby.iapi.types.DataType.setValue.

Implements org.apache.derby.iapi.types.DataValueDescriptor.setValue.

Set the value of this DataValueDescriptor.

public void
setValue(Timestamp
The Timestamp value to set this DataValueDescriptor to
value
,
Calendar
The time zone from the calendar is used to construct the database timestamp value
cal
)

Overrides org.apache.derby.iapi.types.DataType.setValue.

Implements org.apache.derby.iapi.types.DataValueDescriptor.setValue.

Set the value of this DataValueDescriptor.

public void
setValue(String
The String value to set this DataValueDescriptor to
theValue
)

Overrides org.apache.derby.iapi.types.DataType.setValue.

Implements org.apache.derby.iapi.types.DataValueDescriptor.setValue.

Set the value of this DataValueDescriptor.

public void
setValueFromResultSet(ResultSet
The specified ResultSet.
resultSet
,
int
The 1-based column # into the resultSet.
colNumber
,
boolean
Whether or not the column is nullable (No need to call wasNull() if not)
isNullable
)

Implements org.apache.derby.iapi.types.DataValueDescriptor.setValueFromResultSet.

Set the value based on the value for the specified DataValueDescriptor from the specified ResultSet.

public DateTimeDataValue

Returns:

startTime + intervalCount intervals, as a timestamp
timestampAdd
(int
One of FRAC_SECOND_INTERVAL, SECOND_INTERVAL, MINUTE_INTERVAL, HOUR_INTERVAL, DAY_INTERVAL, WEEK_INTERVAL, MONTH_INTERVAL, QUARTER_INTERVAL, or YEAR_INTERVAL
intervalType
,
NumberDataValue
The number of intervals to add
intervalCount
,
Date
Used to convert time to timestamp
currentDate
,
DateTimeDataValue
If non-null a DateTimeDataValue that can be used to hold the result. If null then generate a new holder
resultHolder
)

Implements org.apache.derby.iapi.types.DateTimeDataValue.timestampAdd.

Add a number of intervals to a datetime value.

public NumberDataValue

Returns:

the number of intervals by which this datetime is greater than time1
timestampDiff
(int
One of FRAC_SECOND_INTERVAL, SECOND_INTERVAL, MINUTE_INTERVAL, HOUR_INTERVAL, DAY_INTERVAL, WEEK_INTERVAL, MONTH_INTERVAL, QUARTER_INTERVAL, or YEAR_INTERVAL
intervalType
,
DateTimeDataValue time1, Date
Used to convert time to timestamp
currentDate
,
NumberDataValue
If non-null a NumberDataValue that can be used to hold the result. If null then generate a new holder
resultHolder
)

Implements org.apache.derby.iapi.types.DateTimeDataValue.timestampDiff.

Finds the difference between two datetime values as a number of intervals.

public String
toString()

Overrides java.lang.Object.toString.

Returns a string representation of the object.

private SQLTimestamp
public int
public void
writeExternal(ObjectOutput
the stream to write the object to
out
)

Implements java.io.Externalizable.writeExternal.

The object implements the writeExternal method to save its contents by calling the methods of DataOutput for its primitive values or calling the writeObject method of ObjectOutput for objects, strings, and arrays.

Inherited from org.apache.derby.iapi.types.DataType:
checkHostVariablecloneHoldercoalescecomparecomparecompareTodataTypeConversionequalsequalsflipgenericSetObjectgetBooleangetBytegetBytesgetDoublegetFloatgetIntgetLonggetShortgetStreamgetTimegetTraceStringgetTypeNamegreaterOrEqualsgreaterThanhasStreamininvalidFormatisNotNullisNullOplessOrEqualslessThannormalizenotEqualsoutOfRangereadExternalFromArrayrecyclesetBigDecimalsetIntosetObjectForCastsetToNullsetValuesetValuesetValuesetValuesetValuesetValuesetValuesetValuesetValuesetValuesetValuesetValuesetValuesetValuesetValuesetValuesetValuethrowLangSetMismatchthrowLangSetMismatchtypeToBigDecimal