13.13 Dateクラス

Dateクラスは、SQL DATEデータ項目の抽象化を指定します。また、Dateクラスは、書式操作と解析操作を追加して、日付値のOCCIエスケープ構文をサポートします。

SQL標準DATEはOracle Dateのサブセットであるため、このクラスはこの両方をサポートするために使用できます。

Dateクラスのオブジェクトは、クライアント側の数値計算ではスタンドアロン・クラス・オブジェクトとして使用できます。また、データベースからのフェッチおよびデータベースへの設定にも使用できます。

例13-5 データベースからDate値を取得し、スタンドアロン計算に使用する方法

次の例では、データベースから取り出されたDate列値、Dateオブジェクトを使用したバインド、およびスタンドアロンDateオブジェクトを使用した計算が示されています。

/* Create a connection */
Environment *env = Environment::createEnvironment(Environment::DEFAULT);
Connection *conn = Connection(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);
   .
   .
}

表13-16 Dateメソッドの概要

メソッド 概要

Date()

Dateクラスのコンストラクタです。

addDays()

n日を追加したDateオブジェクトを戻します。

addMonths()

nか月を追加したDateオブジェクトを戻します。

daysBetween()

現行のDateオブジェクトと指定した日付の間の日数を戻します。

fromBytes()

Dateオブジェクトの外部Bytes表現をDateオブジェクトに変換します。

fromText()

指定されたフォーマットとNLSパラメータを使用して、日付を所定の入力文字列から変換します。

getDate()()

Dateオブジェクトの日付と時刻のコンポーネントを戻します。

getSystemDate()

システム日付の入ったDateオブジェクトを戻します。

isNull()

DateNULLの場合はTRUEを、それ以外の場合はFALSEを戻します。

lastDay()

月の最終日のDateを戻します。

nextDay()

翌日の曜日のDateを戻します。

operator=()

日付の値を別の日付に割り当てます。

operator==()

abが同じ場合はTRUEを、それ以外の場合はFALSEを戻します。

operator!=()

abが同じでない場合はTRUEを、それ以外の場合はFALSEを戻します。

operator>()

abより後の場合はTRUEを、それ以外の場合はFALSEを戻します。

operator>=()

ab以後の場合はTRUEを、それ以外の場合はFALSEを戻します。

operator=()

abより前の場合はTRUEを、それ以外の場合はFALSEを戻します。

operator>()

ab以前の場合はTRUEを、それ以外の場合はFALSEを戻します。

setDate()

入力された日付コンポーネントから日付を設定します。

setNull()

オブジェクトの状態をNULLに設定します。

toBytes()

Dateオブジェクトを外部Bytes表現に変換します。

toText()

Dateオブジェクトを文字列として戻します。

toZone()

あるタイム・ゾーンから別のタイム・ゾーンに変換されたDateオブジェクトを戻します。

13.13.1 Date()

Dateクラスのコンストラクタです。

構文 説明
Date();

NULLDateオブジェクトを作成します。

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

13.13.2 addDays()

指定した日数をDateオブジェクトに追加して、新しい日付を戻します。

構文

Date addDays(
   int val) const;
パラメータ 説明
val

現行のDateオブジェクトに追加する日数を指定します。

13.13.3 addMonths()

指定した月数をDateオブジェクトに追加して、新しい日付を戻します。

構文

Date addMonths(
   int val) const;
パラメータ 説明
val

現行のDateオブジェクトに追加する月数を指定します。

13.13.4 daysBetween()

現行のDateオブジェクトと指定した日付の間の日数を戻します。

構文

IntervalDS daysBetween(
   const Date &date) const;
パラメータ 説明
date

間の日数を計算するために使用する日付を指定します。

13.13.5 fromBytes()

BytesオブジェクトをDateオブジェクトに変換します。

構文

void fromBytes(
   const Bytes &byteStream,
   const Environment *envp = NULL);
パラメータ 説明
byteStream

Bytes形式の外部書式での日付を指定します

envp

OCCI環境を指定します。

13.13.6 fromText()

DateオブジェクトをstringまたはUStringが表す値に設定します。

値はfmtおよびnlsParamパラメータに基づいて解析されます。nlsParamが渡されない場合は、envpパラメータのグローバリゼーション・サポート設定が使用されます。

関連項目:

TO_DATEの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

構文 説明
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から選択されます。

13.13.7 getDate()

日付を年、月、日、時、分および秒の日付コンポーネントのフォームで戻します。

構文

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

日付の秒のコンポーネントを指定します。

13.13.8 getSystemDate()

システム日付を戻します。

構文

static Date getSystemDate(
   const Environment *envp);
パラメータ 説明
envp 

システム日付が戻される環境を指定します。

13.13.9 isNull()

DateNULLかどうかをテストします。DateNULLの場合はTRUEを、それ以外の場合はFALSEを戻します。

構文

bool isNull() const;

13.13.10 lastDay()

現在の月の最終日を示す日付を戻します。

構文

Date lastDay() const;

13.13.11 nextDay()

指定した曜日の翌日を示す日付を戻します。

関連項目:

TO_DATEの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

構文 説明
Date nextDay(
   const string &dow) const;

指定した曜日の翌日を示す日付を戻します。

Date nextDay(
   const UString &dow) const;

指定した曜日の翌日を示す日付を戻します。グローバリゼーションが有効となります。パラメータには、日付が生成された環境に関連付けられているキャラクタ・セットを使用する必要があります。

パラメータ 説明
dow

曜日を表す文字列を指定します。

13.13.12 operator=()

等号(=)の右側にある日付オブジェクトを、等号(=)の左側にある日付オブジェクトに割り当てます。

構文

Date& operator=(
   const Date &d);
パラメータ 説明
date

割り当てる日付オブジェクトを指定します。

13.13.13 operator==()

指定した日付を比較します。2つの日付が等しい場合はTRUEを、それ以外の場合はFALSEを戻します。

構文

bool operator==(
   const Date &first,
   const Date &second);
パラメータ 説明
first

比較対象の最初の日付を指定します。

second

比較対象の第2の日付を指定します。

13.13.14 operator!=()

指定した日付を比較します。2つの日付が等しくない場合はTRUEを、それ以外の場合はFALSEを戻します。

構文

bool operator!=(
   const Date &first,
   const Date &second);
パラメータ 説明
first

比較対象の最初の日付を指定します。

second

比較対象の第2の日付を指定します。

13.13.15 operator>()

指定した日付を比較します。第1日付が第2日付より後の日付である場合はTRUEを、それ以外の場合はFALSEを戻します。どちらかの日付がNULLの場合はFALSEを戻します。2つの日付の種類が異なる場合は、FALSEを戻します。

構文

bool operator>(
   const Date &first,
   const Date &second);
パラメータ 説明
first

比較対象の最初の日付を指定します。

second

比較対象の第2の日付を指定します。

13.13.16 operator>=()

指定した日付を比較します。第1日付が第2日付以降の日付である場合はTRUEを、それ以外の場合はFALSEを戻します。どちらかの日付がNULLの場合はFALSEを戻します。2つの日付の種類が異なる場合は、FALSEを戻します。

構文

bool operator>=(
   const Date &first,
   const Date &second);
パラメータ 説明
first

比較対象の最初の日付を指定します。

second

比較対象の第2の日付を指定します。

13.13.17 operator<()

指定した日付を比較します。第1日付が第2日付より前の場合はTRUEを、それ以外の場合はFALSEを戻します。どちらかの日付がNULLの場合はFALSEを戻します。2つの日付の種類が異なる場合は、FALSEを戻します。

構文

bool operator<(
   const Date &first,
   const Date &second);
パラメータ 説明
first

比較対象の最初の日付を指定します。

second

比較対象の第2の日付を指定します。

13.13.18 operator<=()

指定した日付を比較します。第1日付が第2日付以前の日付である場合はTRUEを、それ以外の場合はFALSEを戻します。どちらかの日付がNULLの場合はFALSEを戻します。2つの日付の種類が異なる場合は、FALSEを戻します。

構文

bool operator<=(
   const Date &first,
   const Date &second);
パラメータ 説明
first

比較対象の最初の日付を指定します。

second

比較対象の第2の日付を指定します。

13.13.19 setDate()

日付を指定した値に設定します。

構文

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です。

13.13.20 setNull()

DateをアトミックNULLに設定します。

構文

void setNull();

13.13.21 toBytes()

日付をBytes表現で戻します。

構文

Bytes toBytes() const;

13.13.22 toText()

fmtnlsParamを使用して日付書式化された値のstringまたはUStringを戻します。

値はfmtおよびnlsParamパラメータに基づいて解析されます。nlsParamが渡されない場合は、envpパラメータのグローバリゼーション・サポート設定が使用されます。

関連項目:

TO_DATEの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

構文 説明
string toText(
   const string &fmt = "",
   const string &nlsParam = "") const;

fmtnlsParamを使用して日付書式化された値のstringを戻します。

UString toText(
   const UString &fmt,
   const UString &nlsParam) const;

fmtnlsParamを使用して日付書式化された値のUStringを戻します。

パラメータ 説明
fmt

書式文字列を指定します。デフォルトはDD-MON-YYです。

nlsParam

NLSパラメータ文字列を指定します。nlsParamが指定されている場合は、この指定によって、変換に使用されるNLSパラメータが決まります。nlsParamが指定されていない場合は、NLSパラメータがenvpから選択されます。

13.13.23 toZone()

あるタイム・ゾーンから別のタイム・ゾーンに変換された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

ユーコン標準時またはユーコン夏時間