このクラスは、SQLの標準TIMESTAMP WITH TIME ZONE
型とTIMESTAMP WITHOUT TIME ZONE
型をサポートしており、すべてのデータベースのTIMESTAMP
型(TIMESTAMP
、TIMESTAMP WITH TIME ZONE
およびTIMESTAMP WITH LOCAL TIME ZONE
)で動作します。
時、分、秒、小数秒など、Timestamp
の時間コンポーネントはTimestamp
に対して指定されたタイム・ゾーンのものです。これはリリース10gの新しい動作であり、以前のバージョンでは時間コンポーネントのGMT値がサポートされていました。時間コンポーネントは、データベースへの格納時にTimestamp
で指定されたタイム・ゾーンにのみ変換されました。たとえば、次のTimestamp()のコールでは、Timestamp
値13-Nov 2003 17:24:30.0
がタイム・ゾーン+5:30
で作成されます。
Timestamp ts(env, 2003, 11, 13, 17, 24, 30, 0, 5, 30);
以前のリリースの場合、このコールの動作ではタイムスタンプ・コンポーネントがGMTとして解析され、タイム・ゾーン+5:30
のタイムスタンプ値13-Nov 2003 11:54:30.0
が作成されていました。コンストラクタをコールする前に、このタイムスタンプをGMTに変換する必要がありました。GMTタイム・ゾーンの場合、時と分はどちらも0
(ゼロ)です。
この動作変更は、setDate()メソッドとsetTime()メソッドにも適用されます。
表13-49は、Timestamp
クラスのフィールドとその有効範囲を示しています。パラメータが範囲外の場合はSQLException
が発生します。
フィールド | 型 | 最小値 | 最大値 |
---|---|---|---|
|
int |
|
|
|
unsigned int |
|
|
|
unsigned int |
|
|
|
unsigned int |
|
|
|
unsigned int |
|
|
|
unsigned int |
|
|
|
int |
|
|
|
int |
|
|
メソッド | 概要 |
---|---|
|
|
|
文字列で指定されている値からタイムスタンプを設定します。 |
|
|
|
|
|
タイム・ゾーンの時および分のオフセット値を戻します。 |
|
値(タイムスタンプの値+時間隔)が設定された |
|
値(タイムスタンプの値-時間隔)が設定された |
|
|
|
単純割当てを行います。 |
|
aとbが等しいかどうかをチェックします。 |
|
aとbが等しくないかどうかをチェックします。 |
|
aがbを超えているかどうかをチェックします。 |
|
aがb以上かどうかをチェックします。 |
|
aがb未満かどうかをチェックします。 |
|
aがb以下かどうかをチェックします。 |
|
このタイムスタンプの年、月、日のコンポーネントを設定します。 |
|
Timestampの値を |
|
このタイムスタンプの日、時、分、秒および小数秒の要素を設定します。 |
|
タイム・ゾーンの時および分のオフセットを設定します。 |
|
タイムスタンプの値- |
|
タイムスタンプの値- |
|
タイムスタンプを示す |
Timestamp
クラスのコンストラクタです。
構文 | 説明 |
---|---|
Timestamp( const Environment *env, int year=1, unsigned int month=1, unsigned int day=1, unsigned int hour=0, unsigned int min=0, unsigned int sec=0, unsigned int fs=0, int tzhour=0, int tzmin=0); |
デフォルトのTimestamp オブジェクトを戻します。時間コンポーネントは指定したタイム・ゾーンのものと認識されます。 |
Timestamp(); |
NULLのTimestamp オブジェクトを戻します。NULL のタイムスタンプは、fromText()メソッドを割り当てるか、コールすることによって初期化できます。NULL のTimestampオブジェクトに対してコールできるメソッドは、setNull()、isNull()およびoperator=()です。 |
Timestamp( const Environment *env, int year, unsigned int month, unsigned int day, unsigned int hour, unsigned int min, unsigned int sec, unsigned int fs, const string &timezone); |
これはマルチバイト・サポート用です。タイム・ゾーンは、リージョンUS/EasternまたはGMTからのオフセット+05:30として渡すことができます。空の文字列を渡すと、時刻は現行のセッションのタイム・ゾーンによるものとみなされます。この構文は、TIMESTAMP WITH LOCAL TIME ZONE 型の値の作成に使用します。 |
Timestamp( const Environment *env, int year, unsigned int month, unsigned int day, unsigned int hour, unsigned int min, unsigned int sec, unsigned int fs, const UString &timezone); |
UTF16(UString )のサポート用です。タイム・ゾーンは、リージョンUS/EasternまたはGMTからのオフセット+05:30として渡すことができます。空の文字列を渡すと、時刻は現行のセッションのタイム・ゾーンによるものとみなされます。この構文は、TIMESTAMP WITH LOCAL TIME ZONE 型の値の作成に使用します。 |
Timestamp( const Timestamp &src); |
コピー・コンストラクタです。 |
パラメータ | 説明 |
---|---|
year |
年のコンポーネントを指定します。 |
month |
月のコンポーネントを指定します。 |
day |
日のコンポーネントを指定します。 |
hour |
時のコンポーネントを指定します。 |
minute |
分のコンポーネントを指定します。 |
second |
秒のコンポーネントを指定します。 |
fs |
小数秒のコンポーネントを指定します。 |
tzhour |
タイム・ゾーンの時差のコンポーネントを指定します。 |
tzmin |
タイム・ゾーンの分の違いのコンポーネントを指定します。 |
src |
元のTimezone です。 |
例13-11 デフォルトのTimestampコンストラクタの使用
この例では、デフォルト・コンストラクタによるNULL
値の作成と、Timestamp
にNULL
以外の値を割り当て、それに基づいて操作を実行する方法が示されています。
Environment *env = Environment::createEnvironment(); //create a null timestamp Timestamp ts; if(ts.isNull()) cout << "\n ts is Null"; //assign a non null value to ts Timestamp notNullTs(env, 2000, 8, 17, 12, 0, 0, 0, 5, 30); ts = notNullTs; //now all operations are valid on ts int yr; unsigned int mth, day; ts.getDate(yr, mth, day);
例13-12 NULLのTimestampインスタンスを初期化するためのfromText()メソッドの使用
次のコード例では、NULL
のタイムスタンプを初期化するためにfromText()メソッドを使用する方法が示されています。
Environment *env = Environment::createEnvironment(); Timestamp ts1; ts1.fromText("01:16:17.12 04/03/1825", "hh:mi:ssxff dd/mm/yyyy", "", env);
例13-13 データベースに格納されているタイムスタンプの比較
次のコード例では、結果セットからタイムスタンプ列を取得してタイムスタンプがNULL
かどうかをチェックし、文字列フォーマットでタイムスタンプの値を取得して2つのタイムスタンプの差異を判断する方法が示されています。
Timestamp reft(env, 2001, 1, 1); ResultSet *rs=stmt->executeQuery( "select order_date from orders where customer_id=1"); rs->next(); //retrieve the timestamp column from result set Timestamp ts=rs->getTimestamp(1); //check timestamp for null if(!ts.isNull()) { string tsstr=ts.toText( //get the timestamp value in string format "dd/mm/yyyy hh:mi:ss [tzh:tzm]",0); if(reft<ts //compare timestamps IntervalDS ds=reft.subDS(ts); //get difference between timestamps }
文字列で指定されている値からタイムスタンプを設定します。文字列は指定された書式であることが必要です。nlsParam
が指定されている場合は、この指定によって、変換に使用されるNLSパラメータが決まります。nlsParam
が指定されていない場合、NLSパラメータは指定された環境から選択されます。環境が指定されていない場合、グローバリゼーション・サポート・パラメータはインスタンスに関連付けられている環境から選択されます(関連付けられている場合)。
Timestamp
オブジェクトをstring
またはUString
が表す値に設定します。
値はfmt
およびnlsParam
パラメータに基づいて解析されます。nlsParam
が渡されない場合は、envp
パラメータのグローバリゼーション・サポート設定が使用されます。
関連項目 TO_DATE の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。 |
構文 | 説明 |
---|---|
void fromText( const string ×tmpStr, const string &fmt, const string &nlsParam = "", const Environment *env = NULL); |
Timestamp オブジェクトをstring が表す値に設定します。 |
void fromText( const UString ×tmpStr, const UString &fmt, const UString &nlsParam, const Environment *env = NULL); |
Timestamp オブジェクトをUString が表す値に設定します。これはグローバリゼーション対応の場合です。 |
パラメータ | 説明 |
---|---|
timestmpStr |
Timestamp オブジェクトに変換するタイムスタンプのstring またはUString を指定します。 |
fmt |
書式文字列を指定します。 |
nlsParam |
NLSパラメータ文字列を指定します。nlsParam が指定されている場合は、この指定によって、変換に使用されるNLSパラメータが決まります。nlsParam が指定されていない場合は、NLSパラメータがenvp から選択されます。 |
env |
OCCI環境を指定します。グローバリゼーション対応バージョンのメソッドでは、timestampStr の解析に使用するNLS_CALENDAR の判別に使用します。env を渡されなければ、オブジェクトに関連付けられている環境により設定が制御されます。NULL のTimestamp オブジェクトでコールする場合は、NULL 以外の値にします。 |
Timestamp
の年、月および日の値を戻します。
構文
void getDate( int &year, unsigned int &month, unsigned int &day) const;
パラメータ | 説明 |
---|---|
year |
年のコンポーネントを指定します。 |
month |
月のコンポーネントを指定します。 |
day |
日のコンポーネントを指定します。 |
時、分、秒および小数秒のコンポーネントを戻します。
構文
void getTime( unsigned int &hour, unsigned int &minute, unsigned int &second, unsigned int &fs) const;
パラメータ | 説明 |
---|---|
hour |
時のコンポーネントを指定します。 |
minute |
分のコンポーネントを指定します。 |
second |
秒のコンポーネントを指定します。 |
fs |
小数秒のコンポーネントを指定します。 |
タイム・ゾーン・オフセットを時および分で戻します。
構文
void getTimeZoneOffset( int &hour, int &minute) const;
パラメータ | 説明 |
---|---|
hour |
タイム・ゾーンの時を指定します。 |
minute |
タイム・ゾーンの分を指定します。 |
タイムスタンプに時間隔を加算します。
構文 | 説明 |
---|---|
const Timestamp intervalAdd( const IntervalDS& val) const; |
タイムスタンプにIntervalDSの時間隔を加算します。 |
const Timestamp intervalAdd( const IntervalYM& val) const; |
タイムスタンプにIntervalYMの時間隔を加算します。 |
パラメータ | 説明 |
---|---|
val |
加算する時間隔を指定します。 |
タイムスタンプから時間隔を減算し、その結果をタイムスタンプで戻します。Timestamp
をタイムスタンプの値- val
の値で戻します
構文 | 説明 |
---|---|
const Timestamp intervalSub( const IntervalDS& val) const; |
タイムスタンプからIntervalDS の時間隔を減算します。 |
const Timestamp intervalsUB( const IntervalYM& val) const; |
タイムスタンプからIntervalYM の時間隔を減算します。 |
パラメータ | 説明 |
---|---|
val |
減算する時間隔を指定します。 |
Timestamp
がNULL
の場合はTRUE
を、それ以外の場合はFALSE
を戻します。
構文
bool isNull() const;
指定されたTimestampオブジェクトをこのオブジェクトに割り当てます。
構文
Timestamp & operator=( const Timestamp &src);
パラメータ | 説明 |
---|---|
src |
割り当てる値を指定します。 |
指定した2つのタイムスタンプを比較します。2つのタイムスタンプが等しい場合はTRUE
を、それ以外の場合はFALSE
を戻します。a
またはb
がNULL
の場合は、FALSE
を戻します。
構文
bool operator==( const Timestamp &first, const Timestamp &second);
パラメータ | 説明 |
---|---|
first |
比較対象の最初のタイムスタンプを指定します。 |
second |
比較対象の第2のタイムスタンプを指定します。 |
指定した2つのタイムスタンプを比較します。2つのタイムスタンプが等しくない場合はTRUE
を、それ以外の場合はFALSE
を戻します。どちらかのタイムスタンプがNULL
の場合はFALSE
を戻します。
構文
bool operator!=( const Timestamp &first, const Timestamp &second);
パラメータ | 説明 |
---|---|
first |
比較対象の最初のタイムスタンプを指定します。 |
second |
比較対象の第2のタイムスタンプを指定します。 |
first
がsecond
より後の場合はTRUE
を、それ以外の場合はFALSE
を戻します。どちらかのタイムスタンプがNULL
の場合はFALSE
を戻します。
構文
bool operator>( const Timestamp &first, const Timestamp &second);
パラメータ | 説明 |
---|---|
first |
比較対象の最初のタイムスタンプを指定します。 |
second |
比較対象の第2のタイムスタンプを指定します。 |
指定した2つのタイムスタンプを比較します。first
タイムスタンプがsecond
タイムスタンプ以降の場合はTRUE
を、それ以外の場合はFALSE
を戻します。どちらかのタイムスタンプがNULL
の場合はFALSE
を戻します。
構文
bool operator>=( const Timestamp &first, const Timestamp &second);
パラメータ | 説明 |
---|---|
first |
比較対象の最初のタイムスタンプを指定します。 |
second |
比較対象の第2のタイムスタンプを指定します。 |
first
がsecond
より前の場合はTRUE
を、それ以外の場合はFALSE
を戻します。a
またはb
がNULL
の場合は、FALSE
を戻します。
構文
bool operator<( const Timestamp &first, const Timestamp &second);
パラメータ | 説明 |
---|---|
first |
比較対象の最初のタイムスタンプを指定します。 |
second |
比較対象の第2のタイムスタンプを指定します。 |
指定した2つのタイムスタンプを比較します。first
タイムスタンプがsecond
タイムスタンプ以前の場合はTRUE
を、それ以外の場合はFALSE
を戻します。どちらかのタイムスタンプがNULL
の場合はFALSE
を戻します。
構文
bool operator<=( const Timestamp &first, const Timestamp &second);
パラメータ | 説明 |
---|---|
first |
比較対象の最初のタイムスタンプを指定します。 |
second |
比較対象の第2のタイムスタンプを指定します。 |
このタイムスタンプの年、月、日の要素を設定します。
構文
void setDate( int year, unsigned int month, unsigned int day);
パラメータ | 説明 |
---|---|
year |
年のコンポーネントを指定します。有効な値は、-4713〜9999です。 |
month |
月のコンポーネントを指定します。有効な値は、1〜12です。 |
day |
日のコンポーネントを指定します。有効な値は、1〜31です。 |
タイムスタンプをNULL
に設定します。
構文
void setNull();
このタイムスタンプの日、時、分、秒および小数秒の要素を設定します。
構文
void setTime( unsigned int hour, unsigned int minute, unsigned int second, unsigned int fs);
パラメータ | 説明 |
---|---|
hour | 時のコンポーネントを指定します。有効な値は、0〜23です。 |
minute | 分のコンポーネントを指定します。有効な値は、0〜59です。 |
second | 秒のコンポーネントを指定します。有効な値は、0〜59です。 |
fs | 小数秒のコンポーネントを指定します。 |
タイム・ゾーンの時および分のオフセットを設定します。
構文
void setTimeZoneOffset( int hour, int minute);
パラメータ | 説明 |
---|---|
hour | タイム・ゾーンの時を指定します。有効な値は、-12〜12です。 |
minute | タイム・ゾーンの分を指定します。有効な値は、-59〜59です。 |
このタイムスタンプと指定されたタイムスタンプとの差を計算し、その差をIntervalDS
で戻します。
構文
const IntervalDS subDS( const Timestamp& val) const;
パラメータ | 説明 |
---|---|
val | 減算するタイムスタンプを指定します。 |
2つのタイムスタンプの値の差を計算し、その差をIntervalYM
で戻します。
構文
const IntervalYM subYM( const Timestamp& val) const;
パラメータ | 説明 |
---|---|
val |
減算するTimestamp を指定します。 |
タイムスタンプを表すstring
またはUString
を、指定された書式で戻します。
nlsParam
が指定されている場合は、この指定によって、変換に使用されるNLSパラメータが決まります。nlsParam
が指定されていない場合は、NLSパラメータがインスタンスに関連付けられている環境から選択されます(関連付けられている場合)。
関連項目 TO_DATE の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。 |
構文 | 説明 |
---|---|
string toText( const string &fmt, unsigned int fsprec, const string &nlsParam = "") const; |
タイムスタンプを示すstring を、指定された書式で戻します。 |
UString toText( const UString &fmt, unsigned int fsprec, const UString &nlsParam) const; |
タイムスタンプを表すUString を、指定された書式で戻します。グローバリゼーション対応の場合です。 |
パラメータ | 説明 |
---|---|
fmt |
書式文字列を指定します。 |
fsprec |
Timestamp の小数秒コンポーネントの精度を指定します。 |
nlsParam |
NLS パラメータ文字列を指定します。nlsParam が指定されている場合は、この指定によって、変換に使用されるNLSパラメータが決まります。nlsParam が指定されていない場合は、NLS パラメータがenvp から選択されます。 |