Dateクラスは、SQL DATEデータ項目の抽象化を指定します。また、Dateクラスは、書式操作と解析操作を追加して、日付値のOCCIエスケープ構文をサポートします。
SQL92 DATEはOracle Dateのサブセットであるため、このクラスはこの両方をサポートするために使用できます。
Dateクラスのオブジェクトは、クライアント側の数値計算ではスタンドアロン・クラス・オブジェクトとして使用できます。また、データベースからのフェッチおよびデータベースへの設定にも使用できます。
例13-5 データベースからDate値を取得し、スタンドアロン計算に使用する方法
次の例では、データベースから取り出されたDate列値、Dateオブジェクトを使用したバインド、およびスタンドアロンDateオブジェクトを使用した計算が示されています。
/* Create a connection */
Environment *env = Environment::createEnvironment(Environment::DEFAULT);
Connection *conn = env->createConnection(user, passwd, db);
/* Create a statement and associate a DML statement to it */
string sqlStmt = "SELECT job-id, start_date from JOB_HISTORY
where end_date = :x";
Statement *stmt = conn->createStatement(sqlStmt);
/* Create a Date object and bind it to the statement */
Date edate(env, 2000, 9, 3, 23, 30, 30);
stmt->setDate(1, edate);
ResultSet *rset = stmt->executeQuery();
/* Fetch a date from the database */
while(rset->next())
{
Date sd = rset->getDate(2);
Date temp = sd; /*assignment operator */
/* Methods on Date */
temp.getDate(year, month, day, hour, minute, second);
temp.setMonths(2);
IntervalDS inter = temp.daysBetween(sd);
.
.
}
| メソッド | 概要 |
|---|---|
|
|
|
|
|
n日を追加した |
|
|
nか月を追加した |
|
|
現行の |
|
|
|
|
|
指定されたフォーマットとNLSパラメータを使用して、日付を所定の入力文字列から変換します。 |
|
|
|
|
|
システム日付の入った |
|
|
|
|
|
月の最終日の |
|
|
翌日の曜日の |
|
|
日付の値を別の日付に割り当てます。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
入力された日付コンポーネントから日付を設定します。 |
|
|
オブジェクトの状態を |
|
|
|
|
|
|
|
|
あるタイム・ゾーンから別のタイム・ゾーンに変換された |
Dateクラスのコンストラクタです。
| 構文 | 説明 |
|---|---|
Date(); |
NULLのDateオブジェクトを作成します。 |
Date( const Date &srcDate); |
Dateオブジェクトのコピーを作成します。 |
Date( const Environment *envp, int year = 1, unsigned int month = 1, unsigned int day = 1, unsigned int hour = 0, unsigned int minute = 0, unsigned int seconds = 0); |
整数パラメータを使用してDateオブジェクトを作成します。 |
| パラメータ | 説明 |
|---|---|
| year | 0を除いた-4712〜9999 |
| month | 1〜12 |
| day | 1〜31 |
| minutes | 0〜59 |
| seconds | 0〜59 |
指定した日数をDateオブジェクトに追加して、新しい日付を戻します。
構文
Date addDays( int val) const;
| パラメータ | 説明 |
|---|---|
val |
現行のDateオブジェクトに追加する日数を指定します。 |
指定した月数をDateオブジェクトに追加して、新しい日付を戻します。
構文
Date addMonths( int val) const;
| パラメータ | 説明 |
|---|---|
val |
現行のDateオブジェクトに追加する月数を指定します。 |
現行のDateオブジェクトと指定した日付の間の日数を戻します。
構文
IntervalDS daysBetween( const Date &date) const;
| パラメータ | 説明 |
|---|---|
date |
間の日数を計算するために使用する日付を指定します。 |
BytesオブジェクトをDateオブジェクトに変換します。
構文
void fromBytes( const Bytes &byteStream, const Environment *envp = NULL);
| パラメータ | 説明 |
|---|---|
byteStream |
Bytes形式の外部書式での日付を指定します。 |
envp |
OCCI環境を指定します。 |
DateオブジェクトをstringまたはUStringが表す値に設定します。
値はfmtおよびnlsParamパラメータに基づいて解析されます。nlsParamが渡されない場合は、envpパラメータのグローバリゼーション・サポート設定が使用されます。
| 構文 | 説明 |
|---|---|
void fromText( const string &datestr, const string &fmt = "", const string &nlsParam = "", const Environment *envp = NULL); |
Dateオブジェクトをstringが表す値に設定します。 |
void fromText( const UString &datestr, const UString &fmt, const UString &nlsParam, const Environment *envp = NULL); |
DateオブジェクトをUStringが表す値に設定します。これはグローバリゼーション対応の場合です。 |
| パラメータ | 説明 |
|---|---|
envp |
OCCI環境を指定します。 |
datestr |
Dateオブジェクトに変換する日付文字列を指定します。 |
fmt |
書式文字列を指定します。デフォルトはDD-MON-YYです。 |
nlsParam |
NLSパラメータ文字列を指定します。nlsParamが指定されている場合は、この指定によって、変換に使用されるNLSパラメータが決まります。nlsParamが指定されていない場合は、NLSパラメータがenvpから選択されます。 |
日付を年、月、日、時、分および秒の日付コンポーネントのフォームで戻します。
構文
void getDate( int &year, unsigned int &month, unsigned int &day, unsigned int &hour, unsigned int &min, unsigned int &seconds) const;
| パラメータ | 説明 |
|---|---|
year |
日付の年のコンポーネントを指定します。 |
month |
日付の月のコンポーネントを指定します。 |
day |
日付の日のコンポーネントを指定します。 |
hour |
日付の時のコンポーネントを指定します。 |
min |
日付の分のコンポーネントを指定します。 |
seconds |
日付の秒のコンポーネントを指定します。 |
システム日付を戻します。
構文
static Date getSystemDate( const Environment *envp);
| パラメータ | 説明 |
|---|---|
envp |
システム日付が戻される環境を指定します。 |
DateがNULLかどうかをテストします。DateがNULLの場合はTRUEを、それ以外の場合はFALSEを戻します。
構文
bool isNull() const;
現在の月の最終日を示す日付を戻します。
構文
Date lastDay() const;
指定した曜日の翌日を示す日付を戻します。
| 構文 | 説明 |
|---|---|
Date nextDay( const string &dow) const; |
指定した曜日の翌日を示す日付を戻します。 |
Date nextDay( const UString &dow) const; |
指定した曜日の翌日を示す日付を戻します。これはグローバリゼーション対応の場合です。パラメータには、日付の作成環境に関連付けられているキャラクタ・セットを使用する必要があります。 |
| パラメータ | 説明 |
|---|---|
dow |
曜日を表す文字列を指定します。 |
等号(=)の右側にある日付オブジェクトを、等号(=)の左側にある日付オブジェクトに割り当てます。
構文
Date& operator=( const Date &d);
| パラメータ | 説明 |
|---|---|
date |
割り当てる日付オブジェクトを指定します。 |
指定した日付を比較します。2つの日付が等しい場合はTRUEを、それ以外の場合はFALSEを戻します。
構文
bool operator==( const Date &first, const Date &second);
| パラメータ | 説明 |
|---|---|
first |
比較対象の最初の日付を指定します。 |
second |
比較対象の第2の日付を指定します。 |
指定した日付を比較します。2つの日付が等しくない場合はTRUEを、それ以外の場合はFALSEを戻します。
構文
bool operator!=( const Date &first, const Date &second);
| パラメータ | 説明 |
|---|---|
first |
比較対象の最初の日付を指定します。 |
second |
比較対象の第2の日付を指定します。 |
指定した日付を比較します。第1日付が第2日付より後の日付である場合はTRUEを、それ以外の場合はFALSEを戻します。どちらかの日付がNULLの場合はFALSEを戻します。2つの日付の種類が同じではない場合、FALSEを戻します。
構文
bool operator>( const Date &first, const Date &second);
| パラメータ | 説明 |
|---|---|
first |
比較対象の最初の日付を指定します。 |
second |
比較対象の第2の日付を指定します。 |
指定した日付を比較します。第1日付が第2日付以降の日付である場合はTRUEを、それ以外の場合はFALSEを戻します。どちらかの日付がNULLの場合はFALSEを戻します。2つの日付の種類が同じではない場合、FALSEを戻します。
構文
bool operator>=( const Date &first, const Date &second);
| パラメータ | 説明 |
|---|---|
first |
比較対象の最初の日付を指定します。 |
second |
比較対象の第2の日付を指定します。 |
指定した日付を比較します。第1日付が第2日付より前の日付である場合はTRUEを、それ以外の場合はFALSEを戻します。どちらかの日付がNULLの場合はFALSEを戻します。2つの日付の種類が同じではない場合、FALSEを戻します。
構文
bool operator<( const Date &first, const Date &second);
| パラメータ | 説明 |
|---|---|
first |
比較対象の最初の日付を指定します。 |
second |
比較対象の第2の日付を指定します。 |
指定した日付を比較します。第1日付が第2日付以前の日付である場合はTRUEを、それ以外の場合はFALSEを戻します。どちらかの日付がNULLの場合はFALSEを戻します。2つの日付の種類が同じではない場合、FALSEを戻します。
構文
bool operator<=( const Date &first, const Date &second);
| パラメータ | 説明 |
|---|---|
first |
比較対象の最初の日付を指定します。 |
second |
比較対象の第2の日付を指定します。 |
日付を指定した値に設定します。
構文
void setDate( int year = 1, unsigned int month = 1, unsigned int day = 1, unsigned int hour = 0, unsigned int minute = 0, unsigned int seconds = 0);
| パラメータ | 説明 |
|---|---|
year |
年の値を指定する引数を指定します。有効な値は、-4713〜9999です。 |
month |
月の値を指定する引数を指定します。有効な値は、1〜12です。 |
day |
日の値を指定する引数を指定します。有効な値は、1〜31です。 |
hour |
時の値を指定する引数を指定します。有効な値は、0〜23です。 |
min |
分の値を指定する引数を指定します。有効な値は、0〜59です。 |
seconds |
秒の値を指定する引数を指定します。有効な値は、0〜59です。 |
DateをアトミックNULLに設定します。
構文
void setNull();
日付をBytes表現で戻します。
構文
Bytes toBytes() const;
fmtとnlsParamを使用して日付書式化された値のstringまたはUStringを戻します。
値はfmtおよびnlsParamパラメータに基づいて解析されます。nlsParamが渡されない場合は、envpパラメータのグローバリゼーション・サポート設定が使用されます。
| 構文 | 説明 |
|---|---|
string toText( const string &fmt = "", const string &nlsParam = "") const; |
fmtとnlsParamを使用して日付書式化された値のstringを戻します。 |
UString toText( const UString &fmt, const UString &nlsParam) const; |
fmtとnlsParamを使用して日付書式化された値のUStringを戻します。 |
| パラメータ | 説明 |
|---|---|
fmt |
書式文字列を指定します。デフォルトはDD-MON-YYです。 |
nlsParam |
NLSパラメータ文字列を指定します。nlsParamが指定されている場合は、この指定によって、変換に使用されるNLSパラメータが決まります。nlsParamが指定されていない場合は、NLSパラメータがenvpから選択されます。 |
あるタイム・ゾーンから別のタイム・ゾーンに変換されたDate値を戻します。
構文
Date toZone( const string &zone1, const string &zone2) const;
| パラメータ | 説明 |
|---|---|
zone1 |
変換元タイム・ゾーンを表す文字列を指定します。 |
zone2 |
変換先タイム・ゾーンを表す文字列を指定します。 |
有効なタイム・ゾーン・コードは次のとおりです。
| ゾーン・コード | 値 |
|---|---|
AST、ADT |
大西洋標準時または大西洋夏時間 |
BST、BDT |
ベーリング標準時またはベーリング夏時間 |
CST、CDT |
中部標準時または中部夏時間 |
EST、EDT |
東部標準時または東部夏時間 |
GMT |
グリニッジ標準時 |
HST、HDT |
アラスカ・ハワイ標準時またはアラスカ・ハワイ夏時間 |
MST、MDT |
山地標準時または山地夏時間 |
NST |
ニューファンドランド標準時 |
PST、PDT |
太平洋標準時または太平洋夏時間 |
YST、YDT |
ユーコン標準時またはユーコン夏時間 |