001: /*
002:
003: Derby - Class org.apache.derby.iapi.types.DateTimeDataValue
004:
005: Licensed to the Apache Software Foundation (ASF) under one or more
006: contributor license agreements. See the NOTICE file distributed with
007: this work for additional information regarding copyright ownership.
008: The ASF licenses this file to you under the Apache License, Version 2.0
009: (the "License"); you may not use this file except in compliance with
010: the License. You may obtain a copy of the License at
011:
012: http://www.apache.org/licenses/LICENSE-2.0
013:
014: Unless required by applicable law or agreed to in writing, software
015: distributed under the License is distributed on an "AS IS" BASIS,
016: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
017: See the License for the specific language governing permissions and
018: limitations under the License.
019:
020: */
021:
022: package org.apache.derby.iapi.types;
023:
024: import org.apache.derby.iapi.error.StandardException;
025:
026: public interface DateTimeDataValue extends DataValueDescriptor {
027: public static final int YEAR_FIELD = 0;
028: public static final int MONTH_FIELD = 1;
029: public static final int DAY_FIELD = 2;
030: public static final int HOUR_FIELD = 3;
031: public static final int MINUTE_FIELD = 4;
032: public static final int SECOND_FIELD = 5;
033:
034: // The JDBC interval types
035: public static final int FRAC_SECOND_INTERVAL = 0;
036: public static final int SECOND_INTERVAL = 1;
037: public static final int MINUTE_INTERVAL = 2;
038: public static final int HOUR_INTERVAL = 3;
039: public static final int DAY_INTERVAL = 4;
040: public static final int WEEK_INTERVAL = 5;
041: public static final int MONTH_INTERVAL = 6;
042: public static final int QUARTER_INTERVAL = 7;
043: public static final int YEAR_INTERVAL = 8;
044:
045: /**
046: * Get the year number out of a date.
047: *
048: * @param result The result of the previous call to this method, null
049: * if not called yet.
050: *
051: * @return A NumberDataValue containing the year number.
052: *
053: * @exception StandardException Thrown on error
054: */
055: NumberDataValue getYear(NumberDataValue result)
056: throws StandardException;
057:
058: /**
059: * Get the month number out of a date.
060: *
061: * @param result The result of the previous call to this method, null
062: * if not called yet.
063: *
064: * @return A NumberDataValue containing the month number.
065: *
066: * @exception StandardException Thrown on error
067: */
068: NumberDataValue getMonth(NumberDataValue result)
069: throws StandardException;
070:
071: /**
072: * Get the day of the month.
073: *
074: * @param result The result of the previous call to this method, null
075: * if not called yet.
076: *
077: * @return A NumberDataValue containing the day of the month.
078: *
079: * @exception StandardException Thrown on error
080: */
081: NumberDataValue getDate(NumberDataValue result)
082: throws StandardException;
083:
084: /**
085: * Get the hour of the day out of a time or timestamp.
086: *
087: * @param result The result of the previous call to this method, null
088: * if not called yet.
089: *
090: * @return A NumberDataValue containing the hour of the day.
091: *
092: * @exception StandardException Thrown on error
093: */
094: NumberDataValue getHours(NumberDataValue result)
095: throws StandardException;
096:
097: /**
098: * Get the minute of the hour out of a time or timestamp.
099: *
100: * @param result The result of the previous call to this method, null
101: * if not called yet.
102: *
103: * @return A NumberDataValue containing the minute of the hour.
104: *
105: * @exception StandardException Thrown on error
106: */
107: NumberDataValue getMinutes(NumberDataValue result)
108: throws StandardException;
109:
110: /**
111: * Get the second of the minute out of a time or timestamp.
112: *
113: * @param result The result of the previous call to this method, null
114: * if not called yet.
115: *
116: * @return A NumberDataValue containing the second of the minute.
117: *
118: * @exception StandardException Thrown on error
119: */
120: NumberDataValue getSeconds(NumberDataValue result)
121: throws StandardException;
122:
123: /**
124: * Add a number of intervals to a datetime value. Implements the JDBC escape TIMESTAMPADD function.
125: *
126: * @param intervalType One of FRAC_SECOND_INTERVAL, SECOND_INTERVAL, MINUTE_INTERVAL, HOUR_INTERVAL,
127: * DAY_INTERVAL, WEEK_INTERVAL, MONTH_INTERVAL, QUARTER_INTERVAL, or YEAR_INTERVAL
128: * @param intervalCount The number of intervals to add
129: * @param currentDate Used to convert time to timestamp
130: * @param resultHolder If non-null a DateTimeDataValue that can be used to hold the result. If null then
131: * generate a new holder
132: *
133: * @return startTime + intervalCount intervals, as a timestamp
134: *
135: * @exception StandardException
136: */
137: DateTimeDataValue timestampAdd(int intervalType,
138: NumberDataValue intervalCount, java.sql.Date currentDate,
139: DateTimeDataValue resultHolder) throws StandardException;
140:
141: /**
142: * Finds the difference between two datetime values as a number of intervals. Implements the JDBC
143: * TIMESTAMPDIFF escape function.
144: *
145: * @param intervalType One of FRAC_SECOND_INTERVAL, SECOND_INTERVAL, MINUTE_INTERVAL, HOUR_INTERVAL,
146: * DAY_INTERVAL, WEEK_INTERVAL, MONTH_INTERVAL, QUARTER_INTERVAL, or YEAR_INTERVAL
147: * @param time1
148: * @param currentDate Used to convert time to timestamp
149: * @param resultHolder If non-null a DateTimeDataValue that can be used to hold the result. If null then
150: * generate a new holder
151: *
152: * @return the number of intervals by which this datetime is greater than time1
153: *
154: * @exception StandardException
155: */
156: NumberDataValue timestampDiff(int intervalType,
157: DateTimeDataValue time1, java.sql.Date currentDate,
158: NumberDataValue resultHolder) throws StandardException;
159: }
|