プライマリ・コンテンツに移動
Oracle® Call Interfaceプログラマーズ・ガイド
12c リリース1 (12.1)
B72465-07
目次へ移動
目次
索引へ移動
索引

前
次

OCIの日付関数、日時関数および時間隔関数

表19-4は、この項で説明しているOCIの日付関数および時間隔関数を示しています。

表19-4 日付関数

関数 用途

「OCIDateAddDays()」

日数の加算または減算を行います。

「OCIDateAddMonths()」

月の加算または減算を行います。

「OCIDateAssign()」

日付を割り当てます。

「OCIDateCheck()」

指定の日付が有効かどうかをチェックします。

「OCIDateCompare()」

日付を比較します。

「OCIDateDaysBetween()」

2つの日付の間にある日数を取得します。

「OCIDateFromText()」

文字列を日付に変換します。

「OCIDateGetDate()」

日付の日付部分を取得します。

「OCIDateGetTime()」

日付の時刻部分を取得します。

「OCIDateLastDay()」

月末の日付を取得します。

「OCIDateNextDay()」

次の日の日付を取得します。

「OCIDateSetDate()」

日付の日付部分を設定します。

「OCIDateSetTime()」

日付の時刻部分を設定します。

「OCIDateSysDate()」

現行のシステム日付および時刻を取得します。

「OCIDateTimeAssign()」

日付の割当てを実行します。

「OCIDateTimeCheck()」

指定の日付が有効かどうかをチェックします。

「OCIDateTimeCompare()」

2つの日時値を比較します。

「OCIDateTimeConstruct()」

日時記述子を作成します。

「OCIDateTimeConvert()」

ある日時型を別の日時型に変換します。

「OCIDateTimeFromArray()」

サイズOCI_DT_ARRAYLENの配列をOCIDateTime記述子に変換します

「OCIDateTimeFromText()」

指定された書式に従って、指定の文字列をOCIDateTime記述子のOracle日時型に変換します。

「OCIDateTimeGetDate()」

日時値の日付部分(年、月、日)を取得します。

「OCIDateTimeGetTime()」

日時値の時刻部分(時間、分、秒、小数秒)を取得します。

「OCIDateTimeGetTimeZoneName()」

日時値のタイム・ゾーン名部分を取得します。

「OCIDateTimeGetTimeZoneOffset()」

日時値のタイム・ゾーン(時間、分)部分を取得します。

「OCIDateTimeIntervalAdd()」

日時に時間隔を加算して、結果の日時を生成します。

「OCIDateTimeIntervalSub()」

日時から時間隔を減算して、その結果を日時に格納します。

「OCIDateTimeSubtract()」

2つの日時を入力値にして、その差異を時間隔に格納します。

「OCIDateTimeSysTimeStamp()」

現行のシステム日付および時刻を、タイム・ゾーン付きタイムスタンプとして取得します。

「OCIDateTimeToArray()」

OCIDateTime記述子を配列に変換します。

「OCIDateTimeToText()」

指定された日付を指定の書式の文字列に変換します。

「OCIDateToText()」

日付を文字列に変換します。

「OCIDateZoneToZone()」

あるタイム・ゾーンの日付を別のゾーンの日付に変換します。

「OCIIntervalAdd()」

2つの時間隔を加算して、その結果の時間隔を生成します。

「OCIIntervalAssign()」

ある時間隔を別の時間隔にコピーします。

「OCIIntervalCheck()」

時間隔の妥当性をチェックします。

「OCIIntervalCompare()」

2つの時間隔を比較します。

「OCIIntervalDivide()」

時間隔をOracle NUMBERで除算して、時間隔を生成します。

「OCIIntervalFromNumber()」

Oracle NUMBERを時間隔に変換します。

「OCIIntervalFromText()」

時間隔文字列が指定されている場合、その文字列で表現される時間隔を戻します。

「OCIIntervalFromTZ()」

OCI_DTYPE_INTERVAL_DSを戻します。

「OCIIntervalGetDaySecond()」

時間隔から日、時、分、秒の値を取得します。

「OCIIntervalGetYearMonth()」

時間隔から年と月を取得します。

「OCIIntervalMultiply()」

時間隔をOracle NUMBERで乗算して、時間隔を生成します。

「OCIIntervalSetDaySecond()」

時間隔に日、時、分、秒を設定します。

「OCIIntervalSetYearMonth()」

時間隔に年と月を設定します。

「OCIIntervalSubtract()」

2つの時間隔を減算し、その結果を時間隔に格納します。

「OCIIntervalToNumber()」

時間隔をOracle NUMBERに変換します。

「OCIIntervalToText()」

時間隔が指定されている場合、その時間隔を表現する文字列を生成します。

OCIDateAddDays()

用途

指定の日付に日数を加算または減算します。

構文

sword OCIDateAddDays ( OCIError          *err,
                       const OCIDate     *date, 
                       sb4               num_days,
                       OCIDate           *result );

パラメータ

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

date (IN)

加算または減算の対象となる指定の日付です。

num_days (IN)

加算または減算される日数です。マイナス値の場合は減算となります。

result (IN/OUT)

dateに対して日数を加算または減算した結果です。

戻り値

この関数は、無効な日付が渡された場合はエラーを戻します。

OCIDateAddMonths()

用途

指定の日付に月数を加算または減算します。

構文

sword OCIDateAddMonths ( OCIError            *err,
                         const OCIDate       *date,
                         sb4                 num_months,
                         OCIDate             *result );

パラメータ

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

date (IN)

加算または減算の対象となる指定の日付です。

num_months (IN)

加算または減算される月数です。マイナス値の場合は減算となります。

result (IN/OUT)

dateに対して日数を加算または減算した結果です。

コメント

入力されたdateが月末の場合は、出力される日付も月末になるように適切な調整が行われます。たとえば、2月28日+1か月=3月31日、11月30日 – 3か月=8月31日となります。それ以外の場合、resultの日付はdateの日付コンポーネントと同じになります。

戻り値

この関数は、無効な日付が渡された場合はエラーを戻します。

OCIDateAssign()

用途

日付の割当てを実行します。

構文

sword OCIDateAssign ( OCIError         *err,
                      const OCIDate    *from, 
                      OCIDate          *to );

パラメータ

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

from (IN)

割り当てる日付です。

to (OUT)

割当てのターゲットです。

コメント

この関数は、あるOCIDate変数の値を別の変数に割り当てます。

OCIDateCheck()

用途

指定の日付が有効かどうかをチェックします。

構文

sword OCIDateCheck ( OCIError          *err,
                     const OCIDate     *date, 
                     uword             *valid );

パラメータ

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

date (IN)

チェックする日付です。

valid (OUT)

有効な日付の場合は0 (ゼロ)を戻します。それ以外の場合は、表19-5に指定されたすべてのエラー・ビットの論理演算子ORによる組合せを戻します。

表19-5 OCIDateCheck()の有効なパラメータによって戻されるエラー・ビット

マクロ名 ビット数 エラー

OCI_DATE_INVALID_DAY

0x1

無効な日。

OCI_DATE_DAY_BELOW_VALID

0x2

無効な日の、有効な日に対する大/小を示すビット(1=小)。

OCI_DATE_INVALID_MONTH

0x4

無効な月。

OCI_DATE_MONTH_BELOW_VALID

0x8

無効な月の、有効な月に対する大/小を示すビット(1=小)。

OCI_DATE_INVALID_YEAR

0x10

無効な年。

OCI_DATE_YEAR_BELOW_VALID

0x20

無効な年の、有効な年に対する大/小を示すビット(1=小)。

OCI_DATE_INVALID_HOUR

0x40

無効な時刻(時)。

OCI_DATE_HOUR_BELOW_VALID

0x80

無効な時刻(時)の、有効な時刻(時)に対する大/小を示すビット(1=小)。

OCI_DATE_INVALID_MINUTE

0x100

無効な時刻(分)。

OCI_DATE_MINUTE_BELOW_VALID

0x200

無効な時刻(分)の、有効な時刻(分)に対する大/小を示すビット(1=小)。

OCI_DATE_INVALID_SECOND

0x400

無効な時刻(秒)。

OCI_DATE_SECOND_BELOW_VALID

0x800

無効な時刻(秒)の、有効な時刻(秒)に対する大/小を示すビット(1=小)。

OCI_DATE_DAY_MISSING_FROM_1582

0x1000

日が1582から欠落しています。

OCI_DATE_YEAR_ZERO

0x2000

年が0 (ゼロ)に等しくありません。

OCI_DATE_INVALID_FORMAT

0x8000

無効な日付書式入力。

たとえば、渡された日付が2/0/1990 25:61:10 (月/日/年 時:分:秒書式)の場合は、次のエラーが戻されます。

OCI_DATE_INVALID_DAY | OCI_DATE_DAY_BELOW_VALID | OCI_DATE_INVALID_HOUR | 
   OCI_DATE_INVALID_MINUTE.

戻り値

この関数は、dateまたはvalidポインタがNULLの場合はエラーを戻します。

OCIDateCompare()

用途

2つの日付を比較します。

構文

sword OCIDateCompare ( OCIError           *err, 
                       const OCIDate      *date1, 
                       const OCIDate      *date2,
                       sword              *result );

パラメータ

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

date1、date2 (IN)

比較する日付です。

result (OUT)

表19-6に示したような比較結果です。

表19-6 比較結果

比較結果 resultパラメータの出力

date1 < date2

-1

date1 = date2

0

date1 > date2

1

戻り値

この関数は、無効な日付が渡された場合はエラーを戻します。

OCIDateDaysBetween()

用途

2つの日付間の日数を取得します。

構文

sword OCIDateDaysBetween ( OCIError            *err, 
                           const OCIDate       *date1, 
                           const OCIDate       *date2, 
                           sb4                 *num_days );

パラメータ

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

date1 (IN)

入力日付です。

date2 (IN)

入力日付です。

num_days (OUT)

date1date2の間の日数です。

コメント

date1date2の間の日数の計算時には、時刻は無視されます。

戻り値

この関数は、無効な日付が渡された場合はエラーを戻します。

OCIDateFromText()

指定された書式に従って、文字列を日付型に変換します。

用途

指定された書式に従って、文字列を日付型に変換します。

構文

sword OCIDateFromText ( OCIError           *err,
                        const OraText      *date_str, 
                        ub4                 d_str_length, 
                        const OraText      *fmt,
                        ub1                 fmt_length, 
                        const OraText      *lang_name,
                        ub4                 lang_length, 
                        OCIDate            *date );

パラメータ

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

date_str (IN)

Oracle日付に変換される入力文字列です。

d_str_length (IN)

入力文字列のサイズです。長さが–1の場合、date_strNULLで終了する文字列として処理されます。

fmt (IN)

変換書式です。fmtNULLポインタの場合、文字列は"DD-MON-YY"書式になります。

fmt_length (IN)

fmtパラメータの長さです。

lang_name (IN)

日および月の名前と省略が指定される言語です。lang_nameNULL文字列(text *)0の場合は、そのセッションのデフォルト言語が使用されます。

lang_length (IN)

lang_nameパラメータの長さです。

date (OUT)

日付に変換された指定文字列です。

コメント

書式および多言語引数の詳細は、『Oracle Database SQL言語リファレンス』TO_DATE変換関数の説明を参照してください。

戻り値

この関数は、無効な書式、言語または入力文字列を受け取った場合はエラーを戻します。

OCIDateGetDate()

用途

Oracle日付に格納されている年月日を取得します。

構文

void OCIDateGetDate ( const OCIDate    *date,
                      sb2              *year,
                      ub1              *month, 
                      ub1              *day ); 

パラメータ

date (IN)

年、月、日データの取出し元となるOracle日付です。

year (OUT)

戻される年の値です。

month (OUT)

戻される月の値です。

day (OUT)

戻される日の値です。

コメント

なし。

OCIDateGetTime()

用途

Oracle日付に格納されている時刻を取得します。

構文

void OCIDateGetTime ( const OCIDate    *date,
                      ub1              *hour,
                      ub1              *min, 
                      ub1              *sec );

パラメータ

date (IN)

時間データの取出し元となるOracle日付です。

hour (OUT)

戻される時間の値です。

min (OUT)

戻される分の値です。

sec (OUT)

戻される秒の値です。

戻り値

時、分、秒の時刻情報を戻します。

OCIDateLastDay()

用途

指定された日付の月の最後の日の日付を取得します。

構文

sword OCIDateLastDay ( OCIError            *err,
                       const OCIDate       *date,
                       OCIDate             *last_day );

パラメータ

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

date (IN)

入力日付です。

last_day (OUT)

dateの月の最後の日付です。

戻り値

この関数は、無効な日付が渡された場合はエラーを戻します。

OCIDateNextDay()

用途

指定した日付以降で、指定した曜日の最初の日付を取得します。

構文

sword OCIDateNextDay ( OCIError            *err,
                       const OCIDate       *date,
                       const OraText       *day, 
                       ub4                 day_length,
                       OCIDate             *next_day );

パラメータ

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

date (IN)

戻される日付は、この日付よりも後になります。

day (IN)

これによって指定された週の最初の日が戻されます。

day_length (IN)

文字列dayのバイト長です。

next_day (OUT)

date以降で、dayによって指定された週の最初の日付です。

戻り値

date以降で、dayによって指定された週の最初の曜日の日付を戻します。

次のコード例は、1996年4月18日(木曜日)の次の月曜日の日付の取得方法を示しています。

指定した日付以降の指定した曜日の日付の取得

OCIDate one_day, next_day;
/* Add code here to set one_day to be '18-APR-96' */
OCIDateNextDay(err, &one_day, "MONDAY", strlen("MONDAY"), &next_day);

OCIDateNextDay()は"22-APR-96"を戻します。

この関数は、無効な日付または曜日が渡された場合はエラーを戻します。

OCIDateSetDate()

用途

Oracle日付に値を設定します。

構文

void OCIDateSetDate ( OCIDate    *date, 
                      sb2        year, 
                      ub1        month, 
                      ub1        day );

パラメータ

date (OUT)

時間データ設定の対象となるOracle日付です。

year (IN)

設定する年の値です。

month (IN)

設定する月の値です。

day (IN)

設定する日の値です。

コメント

なし。

関連関数

OCIDateGetDate()

OCIDateSetTime()

用途

Oracle日付に時刻情報を設定します。

構文

void OCIDateSetTime ( OCIDate    *date,
                      ub1        hour, 
                      ub1        min, 
                      ub1        sec ); 

パラメータ

date (OUT)

時間データ設定の対象となるOracle日付です。

hour (IN)

設定する時間の値です。

min (IN)

設定する分の値です。

sec (IN)

設定する秒の値です。

コメント

なし。

関連関数

OCIDateGetTime()

OCIDateSysDate()

用途

クライアントの現行のシステム日付およびシステム時刻を取得します。

構文

sword OCIDateSysDate ( OCIError       *err,
                       OCIDate        *sys_date );

パラメータ

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

sys_date (OUT)

クライアントの現行日付およびシステム時刻です。

コメント

なし。

関連関数

OCIErrorGet()

OCIDateTimeAssign()

用途

日時の割当てを実行します。

構文

sword OCIDateTimeAssign ( void                *hndl, 
                          OCIError            *err,
                          const OCIDateTime   *from,
                          OCIDateTime         *to );

パラメータ

hndl (IN)

OCIユーザー・セッション・ハンドルまたは環境ハンドルです。ユーザー・セッション・ハンドルが渡されると、セッションのNLS_LANGUAGEおよびセッションのNLS_CALENDARで変換が行われます。渡されない場合は、デフォルトが使用されます。

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

from (IN)

ソース、割当て先となる右側(rhs)日時です。

to (OUT)

ターゲット、割当ての左側(lhs)です。

コメント

この関数は、typeパラメータの説明にリストされている日時型に関して、from日時からto日時への割当てを実行します。

出力のtypeは入力と同じです。

戻り値

OCI_SUCCESSまたはOCI_ERROR。

OCIDateTimeCheck()

用途

指定の日付が有効かどうかをチェックします。

構文

sword OCIDateTimeCheck ( void                *hndl,
                         OCIError            *err, 
                         const OCIDateTime   *date, 
                         ub4                 *valid );

パラメータ

hndl (IN)

OCIユーザー・セッション・ハンドルまたは環境ハンドルです。ユーザー・セッション・ハンドルが渡されると、セッションのNLS_LANGUAGEおよびセッションのNLS_CALENDARで変換が行われます。渡されない場合は、デフォルトが使用されます。

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

date (IN)

チェックする日付です。

valid (OUT)

有効な日付の場合は0 (ゼロ)を戻します。それ以外の場合は、表19-7に指定されたすべてのエラー・ビットの論理演算子ORによる組合せを戻します。

表19-7 OCIDateTimeCheck()の有効なパラメータによって戻されるエラー・ビット

マクロ名 ビット数 エラー

OCI_DT_INVALID_DAY

0x1

無効な日。

OCI_DT_DAY_BELOW_VALID

0x2

無効な日の、有効な日に対する大/小を示すビット(1=小)。

OCI_DT_INVALID_MONTH

0x4

無効な月。

OCI_DT_MONTH_BELOW_VALID

0x8

無効な月の、有効な月に対する大/小を示すビット(1=小)。

OCI_DT_INVALID_YEAR

0x10

無効な年。

OCI_DT_YEAR_BELOW_VALID

0x20

無効な年の、有効な年に対する大/小を示すビット(1=小)。

OCI_DT_INVALID_HOUR

0x40

無効な時刻(時)。

OCI_DT_HOUR_BELOW_VALID

0x80

無効な時刻(時)の、有効な時刻(時)に対する大/小を示すビット(1=小)。

OCI_DT_INVALID_MINUTE

0x100

無効な時刻(分)。

OCI_DT_MINUTE_BELOW_VALID

0x200

無効な時刻(分)の、有効な時刻(分)に対する大/小を示すビット(1=小)。

OCI_DT_INVALID_SECOND

0x400

無効な時刻(秒)。

OCI_DT_SECOND_BELOW_VALID

0x800

無効な時刻(秒)の、有効な時刻(秒)に対する大/小を示すビット(1=小)。

OCI_DT_DAY_MISSING_FROM_1582

0x1000

日が1582から欠落しています。

OCI_DT_YEAR_ZERO

0x2000

年が0 (ゼロ)に等しくありません。

OCI_DT_INVALID_TIMEZONE

0x4000

無効なタイム・ゾーン。

OCI_DT_INVALID_FORMAT

0x8000

無効な日付書式入力。

たとえば渡された日付が2/0/1990 25:61:10 (月/日/年 時:分:秒書式)の場合は、次のエラーが戻されます。

 OCI_DT_INVALID_DAY | OCI_DT_DAY_BELOW_VALID | 
     OCI_DT_INVALID_HOUR | OCI_DT_INVALID_MINUTE.

戻り値

OCI_SUCCESSOCI_INVALID_HANDLE (errがNULLポインタの場合)、OCI_ERROR (dateまたはvalidNULLポインタの場合)。

関連関数

OCIDateTimeAssign()

OCIDateTimeCompare()

用途

2つの日時値を比較します。

構文

sword OCIDateTimeCompare ( void               *hndl,
                           OCIError           *err,
                           const OCIDateTime  *date1, 
                           const OCIDateTime  *date2,
                           sword              *result );

パラメータ

hndl (IN/OUT)

OCIユーザー・セッション・ハンドルまたは環境ハンドルです。

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

date1、date2 (IN)

比較する日付です。

result (OUT)

表19-8に示したような比較結果です。

表19-8 OCIDateTimeCompare()のresultパラメータによって戻される比較結果

比較結果 resultパラメータの出力

date1 < date2

-1

date1 = date2

0

date1 > date2

1

戻り値

OCI_SUCCESSOCI_INVALID_HANDLE (errがNULLポインタの場合)、OCI_ERROR (無効な日付が使用されている場合または入力日付引数が相互に比較可能な型でない場合)。

OCIDateTimeConstruct()

用途

日時記述子を作成します。

構文

sword OCIDateTimeConstruct ( void          *hndl,
                             OCIError      *err,
                             OCIDateTime   *datetime,
                             sb2           year,
                             ub1           month,
                             ub1           day,
                             ub1           hour,
                             ub1           min,
                             ub1           sec,
                             ub4           fsec,
                             OraText       *timezone,
                             size_t        timezone_length );

パラメータ

hndl (IN)

OCIユーザー・セッション・ハンドルまたは環境ハンドルです。

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

datetime (IN)

OCIDateTime記述子へのポインタです。

year (IN)

年の値です。

month (IN)

月の値です。

day (IN)

日の値です。

hour (IN)

時間の値です。

min (IN)

分の値です。

sec (IN)

秒の値です。

fsec (IN)

小数秒の値です。

timezone (IN)

タイム・ゾーン文字列です。タイム・ゾーン置換の文字列表現は、[+|-][HH:MM]という書式での、現地時間とUTC (協定世界時、以前はグリニッジ平均時)との差異(時分による)です。たとえば、「-08:00」。

timezone_length (IN)

タイム・ゾーン文字列の長さです。

コメント

日時の型は、OCIDateTime記述子の型です。型に基づいた関連フィールドのみを使用します。タイム・ゾーンを持つ型の場合、日付フィールドと時刻フィールドは、指定されたタイム・ゾーンのローカル・タイムとみなされます。

タイム・ゾーンが指定されていない場合は、セッションのデフォルト・タイム・ゾーンが使用されます。

戻り値

OCI_SUCCESSOCI_ERROR (日時が無効な場合)。

OCIDateTimeConvert()

用途

ある日時型を別の日時型に変換します。

構文

sword OCIDateTimeConvert ( void         *hndl,
                           OCIError     *err, 
                           OCIDateTime  *indate, 
                           OCIDateTime  *outdate );

パラメータ

hndl (IN)

OCIユーザー・セッション・ハンドルまたは環境ハンドルです。

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

indate (IN)

入力日付へのポインタです。

outdate (OUT)

出力日時へのポインタです。

コメント

この関数は、ある日時型を別の日時型に変換します。結果タイプは、outdate記述子の型になります。タイム・ゾーンを持たない日時をタイム・ゾーンを持つ日時に変換する場合は、セッションのデフォルト・タイム・ゾーン(ORA_SDTZ)が使用されます。

戻り値

OCI_SUCCESSOCI_INVALID_HANDLE (errNULLの場合)、OCI_ERROR (指定の入力値では変換が不可能な場合)。

関連関数

OCIDateTimeCheck()

OCIDateTimeFromArray()

用途

日付が含まれている配列をOCIDateTime記述子に変換します。

構文

sword OCIDateTimeFromArray ( void               *hndl,
                             OCIError           *err, 
                             const ub1          *inarray,
                             ub4                *len 
                             ub1                type,
                             OCIDateTime        *datetime,
                             const OCIInterval  *reftz,
                             ub1                fsprec );

パラメータ

hndl (IN)

OCIユーザー・セッション・ハンドルまたは環境ハンドルです。

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

inarray (IN)

日付が含まれるub1の配列です。

len (IN)

inarrayの長さです。

type (IN)

結果の日時の型です。配列は、特定のSQLT型に変換されます。

datetime (OUT)

OCIDateTime記述子へのポインタです。

reftz (IN)

SQLT_TIMESTAMP_LTZ型の変換時に参照として使用するOCIIntervalの記述子です。

fsprec (IN)

結果の日時の小数秒の精度です。

戻り値

OCI_SUCCESSOCI_ERROR (typeが無効な場合)。

OCIDateTimeFromText()

指定された書式に従って、指定の文字列をOCIDateTime記述子のOracle日時型に変換します。

用途

指定された書式に従って、指定の文字列をOCIDateTime記述子のOracle日時型に変換します。

構文

sword OCIDateTimeFromText ( void               *hndl,
                            OCIError           *err, 
                            const OraText      *date_str,
                            size_t              dstr_length,
                            const OraText      *fmt,
                            ub1                 fmt_length, 
                            const OraText      *lang_name,
                            size_t              lang_length, 
                            OCIDateTime        *datetime );

パラメータ

hndl (IN)

OCIユーザー・セッション・ハンドルまたは環境ハンドルです。ユーザー・セッション・ハンドルが渡されると、セッションのNLS_LANGUAGEおよびセッションのNLS_CALENDARで変換が行われます。渡されない場合は、デフォルトが使用されます。

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

date_str (IN)

Oracle日時に変換される入力文字列です。

dstr_length (IN)

入力文字列のサイズです。長さが–1の場合、date_strNULLで終了する文字列として処理されます。

fmt (IN)

変換書式です。fmtNULLポインタの場合、文字列は日時型のデフォルトの書式になります。

fmt_length (IN)

fmtパラメータの長さです。

lang_name (IN)

日および月の名前と略称が指定される際の言語を指定します。lang_nameNULL (lang_name = (text *)0)の場合は、セッションのデフォルト言語が使用されます。

lang_length (IN)

lang_nameパラメータの長さです。

datetime (OUT)

日付に変換された指定文字列です。

コメント

書式引数の詳細は、『Oracle Database SQL言語リファレンス』TO_DATE変換関数の説明を参照してください。

戻り値

OCI_SUCCESSOCI_INVALID_HANDLE (errNULLの場合)、OCI_ERROR (次のいずれかの場合)。

  • 無効な書式が使用されている場合。

  • 不明な言語が使用されている場合。

  • 無効な入力文字列が使用されている場合。

OCIDateTimeGetDate()

用途

日時値の日付部分(年、月、日)を取得します。

構文

sword OCIDateTimeGetDate ( void               *hndl,
                           OCIError           *err, 
                           const OCIDateTime  *datetime,
                           sb2                *year, 
                           ub1                *month, 
                           ub1                *day );

パラメータ

hndl (IN)

OCIユーザー・セッション・ハンドルまたは環境ハンドルです。

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

datetime (IN)

日付情報が取り出されるOCIDateTime記述子へのポインタです。

year (OUT)
month (OUT)
day (OUT)

取り出された年、月および日の値です。

コメント

この関数は、日時値の日付部分(年、月、日)を取得します。

戻り値

OCI_SUCCESSまたはOCI_ERROR

OCIDateTimeGetTime()

用途

日時値の時刻部分(時間、分、秒、小数秒)を取得します。

構文

sword OCIDateTimeGetTime ( void          *hndl, 
                           OCIError      *err, 
                           OCIDateTime   *datetime, 
                           ub1           *hour,
                           ub1           *min, 
                           ub1           *sec, 
                           ub4           *fsec );

パラメータ

hndl (IN)

OCIユーザー・セッション・ハンドルまたは環境ハンドルです。

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

datetime (IN)

時刻情報が取り出されるOCIDateTime記述子へのポインタです。

hour (OUT)

取り出される時間の値です。

min (OUT)

取り出される分の値です。

sec (OUT)

取り出される秒の値です。

fsec (OUT)

取り出される小数秒の値です。

コメント

この関数は、指定の日時値から時刻部分(時間、分、秒、小数秒)を取得します。

この関数は、指定の日時に時間情報が含まれていない場合はエラーを戻します。

戻り値

OCI_SUCCESSOCI_ERROR (日時に時間(SQLT_DATE)が含まれていない場合)。

OCIDateTimeGetTimeZoneName()

用途

日時のタイム・ゾーン名部分を取得します。

構文

sword OCIDateTimeGetTimeZoneName ( void               *hndl, 
                                   OCIError           *err, 
                                   const OCIDateTime  *datetime, 
                                   ub1                *buf,
                                   ub4                *buflen, );

パラメータ

hndl (IN)

OCIユーザー・セッション・ハンドルまたは環境ハンドルです。

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

datetime (IN)

OCIDateTime記述子へのポインタです。

buf (OUT)

取り出されたタイム・ゾーン名を格納するバッファです。

buflen (IN/OUT)

(IN)はバッファのサイズです。(OUT)は名前フィールドのサイズです。

コメント

この関数は、指定の日時値から時刻部分(時間、分、秒、小数秒)を取得します。

この関数は、指定の日時に時間情報が含まれていない場合はエラーを戻します。

戻り値

OCI_SUCCESSOCI_ERROR (日時にタイム・ゾーン(SQLT_DATESQLT_TIMESTAMP)が含まれていない場合)。

OCIDateTimeGetTimeZoneOffset()

用途

日時値のタイム・ゾーン(時間、分)部分を取得します。

構文

sword OCIDateTimeGetTimeZoneOffset ( void               *hndl, 
                                     OCIError           *err, 
                                     const OCIDateTime  *datetime, 
                                     sb1                *hour,
                                     sb1                *min, );

パラメータ

hndl (IN)

OCIユーザー・セッション・ハンドルまたは環境ハンドルです。

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

datetime (IN)

OCIDateTime記述子へのポインタです。

hour (OUT)

取り出されるタイム・ゾーンの時間の値です。

min (OUT)

取り出されるタイム・ゾーンの分の値です。

コメント

この関数は、指定の日時値からタイム・ゾーンの時間と分の部分を取得します。

この関数は、指定の日時に時間情報が含まれていない場合はエラーを戻します。

戻り値

OCI_SUCCESSOCI_ERROR (日時にタイム・ゾーン(SQLT_DATESQLT_TIMESTAMP)が含まれていない場合)。

OCIDateTimeIntervalAdd()

用途

時間隔を日時に加算して、結果の日時を生成します。

構文

sword OCIDateTimeIntervalAdd ( void         *hndl, 
                               OCIError     *err, 
                               OCIDateTime  *datetime, 
                               OCIInterval  *inter, 
                               OCIDateTime  *outdatetime );

パラメータ

hndl (IN)

ユーザー・セッション・ハンドルまたは環境ハンドルです。セッション・ハンドルが渡されると、セッションのデフォルト・カレンダで加算が行われます。

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

datetime (IN)

入力日時へのポインタです。

inter (IN)

入力時間隔へのポインタです。

outdatetime (OUT)

出力日時へのポインタです。出力日時と入力日時の型は同じになります。

戻り値

OCI_SUCCESS (関数が正常に完了した場合)、OCI_INVALID_HANDLE (errNULLポインタの場合)、OCI_ERROR (結果の日付が紀元前4713年1月1日より前、または9999年12月31日より後の場合)。

OCIDateTimeIntervalSub()

用途

日時から時間隔を減算して、その結果を日時に格納します。

構文

sword OCIDateTimeIntervalSub ( void         *hndl,
                               OCIError     *err, 
                               OCIDateTime  *datetime, 
                               OCIInterval  *inter,
                               OCIDateTime  *outdatetime );

パラメータ

hndl (IN)

ユーザー・セッション・ハンドルまたは環境ハンドルです。セッション・ハンドルが渡されると、セッションのデフォルト・カレンダで減算が行われます。時間隔は、セッション・カレンダ内であるとみなされます。

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

datetime (IN)

入力日時値へのポインタです。

inter (IN)

入力時間隔へのポインタです。

outdatetime (OUT)

出力日時へのポインタです。出力日時と入力日時の型は同じになります。

戻り値

OCI_SUCCESS (関数が正常に完了した場合)、OCI_INVALID_HANDLE (errNULLポインタの場合)、OCI_ERROR (結果の日付が紀元前4713年1月1日より前、または9999年12月31日より後の場合)。

OCIDateTimeSubtract()

用途

2つの日時を入力値にして、その差異を時間隔に格納します。

構文

sword OCIDateTimeSubtract ( void         *hndl, 
                            OCIError     *err,
                            OCIDateTime  *indate1,
                            OCIDateTime  *indate2, 
                            OCIInterval  *inter );

パラメータ

hndl (IN)

OCIユーザー・セッション・ハンドルまたは環境ハンドルです。

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

indate1(IN)

減数(減算する数)へのポインタです。

indate2(IN)

被減数(減算される数)へのポインタです。

inter (OUT)

出力時間隔へのポインタです。

戻り値

OCI_SUCCESS (関数が正常に完了した場合)、OCI_INVALID_HANDLE (errNULLポインタの場合)、OCI_ERROR (入力日時が比較可能な型でない場合)。

OCIDateTimeSysTimeStamp()

用途

現行のシステム日付および時刻を、タイム・ゾーン付きタイムスタンプとして取得します。

構文

sword OCIDateTimeSysTimeStamp ( void           *hndl,
                                OCIError       *err, 
                                OCIDateTime    *sys_date );

パラメータ

hndl (IN)

OCIユーザー・セッション・ハンドルまたは環境ハンドルです。

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

sys_date (OUT)

出力タイムスタンプへのポインタです。

戻り値

OCI_SUCCESSOCI_INVALID_HANDLE (errNULLポインタの場合)。

関連関数

OCIDateSysDate()

OCIDateTimeToArray()

用途

OCIDateTime記述子を配列に変換します。

構文

sword OCIDateTimeToArray ( void               *hndl,
                           OCIError           *err, 
                           const OCIDateTime  *datetime, 
                           const OCIInterval  *reftz,
                           ub1                *outarray, 
                           ub4                *len 
                           ub1                fsprec );

パラメータ

hndl (IN)

OCIユーザー・セッション・ハンドルまたは環境ハンドルです。

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

datetime (IN)

OCIDateTime記述子へのポインタです。

reftz (IN)

SQL_TIMESTAMP_LTZ型の変換時に参照として使用するOCIIntervalの記述子です。

outarray (OUT)

日付が含まれるバイトの配列です。

len (OUT)

outarrayの長さです。

fsprec (IN)

配列の小数秒の精度です。

コメント

OCIによって配列が割り当てられ、その長さが戻されます。

戻り値

OCI_SUCCESSOCI_ERROR (日時が無効な場合)。

OCIDateTimeToText()

指定された日付を指定の書式の文字列に変換します。

用途

指定された日付を指定の書式の文字列に変換します。

構文

sword OCIDateTimeToText ( void                *hndl, 
                          OCIError            *err, 
                          const OCIDateTime   *date, 
                          const OraText       *fmt,
                          ub1                  fmt_length, 
                          ub1                  fsprec,
                          const OraText       *lang_name, 
                          size_t               lang_length, 
                          ub4                 *buf_size, 
                          OraText             *buf );

パラメータ

hndl (IN)

OCIユーザー・セッション・ハンドルまたは環境ハンドルです。ユーザー・セッション・ハンドルが渡されると、セッションのNLS_LANGUAGEおよびセッションのNLS_CALENDARで変換が行われます。渡されない場合は、デフォルトが使用されます。

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

date (IN)

変換するOracle日時値です。

fmt (IN)

変換書式です。NULL文字列ポインタ(text*)0の場合、日付は、その型に対するデフォルトの書式で文字列に変換されます。

fmt_length (IN)

fmtパラメータの長さです。

fsprec (IN)

戻される小数秒値の精度を指定します。

lang_name (IN)

日および月の名前と略称が戻される際の言語を指定します。lang_nameNULL (lang_name = (OraText *)0)の場合は、セッションのデフォルト言語が使用されます。

lang_length (IN)

lang_nameパラメータの長さです。

buf_size (IN/OUT)

(IN)はbufバッファのサイズです。

(OUT)は変換結果の文字列のサイズです。

buf (OUT)

変換された文字列が配置されるバッファです。

コメント

書式および多言語引数の詳細は、『Oracle Database SQL言語リファレンス』TO_DATE変換関数の説明を参照してください。変換されてNULL文字で終了する日付文字列は、bufバッファに格納されます。

戻り値

OCI_SUCCESSOCI_INVALID_HANDLE (errNULLの場合)、OCI_ERROR (次のいずれかの場合)。

  • バッファが小さすぎる場合。

  • 無効な書式が使用されている場合。

  • 不明な言語が使用されている場合。

  • オーバーフロー・エラーがある場合。

OCIDateToText()

日付型を文字列に変換します。

用途

日付型を文字列に変換します。

構文

sword OCIDateToText ( OCIError                  *err, 
                      const OCIDate             *date, 
                      const OraText             *fmt, 
                      ub1                        fmt_length, 
                      const OraText             *lang_name,
                      ub4                        lang_length, 
                      ub4                       *buf_size, 
                      OraText                   *buf );

パラメータ

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

date (IN)

変換するOracle日付です。

fmt (IN)

変換書式です。NULL、つまり(text *)0の場合、日付はデフォルトの日付書式DD-MON-YYの文字列に変換されます。

fmt_length (IN)

fmtパラメータの長さです。

lang_name (IN)

月および日の名前と略称が戻される際の言語を指定します。lang_nameNULL ((text *)0)の場合は、セッションのデフォルト言語が使用されます。

lang_length (IN)

lang_nameパラメータの長さです。

buf_size (IN/OUT)

バッファのサイズです(IN)。このパラメータ(OUT)に、結果の文字列のサイズが戻されます。

buf (OUT)

変換された文字列が配置されるバッファです。

コメント

指定された日付を指定の書式の文字列に変換します。変換されてNULLで終了する日付文字列は、bufに格納されます。

書式および多言語引数の詳細は、『Oracle Database SQL言語リファレンス』TO_DATE変換関数の説明を参照してください。

戻り値

この関数は、バッファが小さすぎる場合または無効な書式や認識できない言語が渡された場合はエラーを戻します。オーバーフローもエラーの原因となります。たとえば、値10を書式9に変換すると、エラーが発生します。

OCIDateZoneToZone()

あるタイム・ゾーンの日付を別のタイム・ゾーンの日付に変換します。

用途

あるタイム・ゾーンの日付を別のタイム・ゾーンの日付に変換します。

構文

sword OCIDateZoneToZone ( OCIError           *err, 
                          const OCIDate      *date1, 
                          const OraText      *zon1,
                          ub4                 zon1_length, 
                          const OraText      *zon2, 
                          ub4                 zon2_length, 
                          OCIDate            *date2 );

パラメータ

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

date1 (IN)

変換する日付です。

zon1 (IN)

入力日付のゾーンです。

zon1_length (IN)

zon1のバイト長です。

zon2 (IN)

変換先のゾーンです。

zon2_length (IN)

zon2のバイト長です。

date2 (OUT)

zon2での変換日付です。

コメント

タイム・ゾーンzon1の指定の日付date1を、タイム・ゾーンzon2の日付date2に変換します。北米のタイム・ゾーンのみが対象です。

有効なゾーン文字列のリストは、『Oracle Database SQL言語リファレンス』NEW_TIME関数の説明を参照してください。有効なゾーン文字列の例を次に示します。

  • AST (大西洋標準時)

  • ADT (大西洋夏時間)

  • BST (ベーリング標準時)

  • BDT (ベーリング夏時間)

戻り値

この関数は、無効な日付またはタイム・ゾーンが渡された場合はエラーを戻します。

OCIIntervalAdd()

用途

2つの時間隔を加算して、結果の時間隔を生成します。

構文

sword OCIIntervalAdd ( void         *hndl, 
                       OCIError     *err, 
                       OCIInterval  *addend1, 
                       OCIInterval  *addend2, 
                       OCIInterval  *result );

パラメータ

hndl (IN)

OCIユーザー・セッション・ハンドルまたは環境ハンドルです。

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

addend1 (IN)

加算する時間隔です。

addend2 (IN)

加算する時間隔です。

result (OUT)

加算結果の時間隔(addend1 + addend2)です。

戻り値

OCI_SUCCESSOCI_INVALID_HANDLE (errNULLポインタの場合)、OCI_ERROR (次のいずれかの場合)。

  • 入力された2つの時間隔が相互に比較可能でない場合。

  • 結果の年がSB4MAXVALを超える場合。

  • 結果の年がSB4MINVALを下回る場合。

OCIIntervalAssign()

用途

ある時間隔を別の時間隔にコピーします。

構文

void OCIIntervalAssign ( void              *hndl, 
                         OCIError          *err, 
                         const OCIInterval *inpinter, 
                         OCIInterval       *outinter );

パラメータ

hndl (IN)

OCIユーザー・セッション・ハンドルまたは環境ハンドルです。

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

inpinter (IN)

入力時間隔です。

outinter (OUT)

出力時間隔です。

戻り値

OCI_SUCCESSOCI_INVALID_HANDLE (errNULLポインタの場合)。

OCIIntervalCheck()

用途

時間隔の妥当性をチェックします。

構文

sword OCIIntervalCheck ( void               *hndl,
                        OCIError            *err,
                        const OCIInterval   *interval,
                        ub4                 *valid );

パラメータ

hndl (IN)

OCIユーザー・セッション・ハンドルまたは環境ハンドルです。

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

interval (IN)

チェックする時間隔です。

valid (OUT)

時間隔が有効な場合は0 (ゼロ)を戻します。それ以外の場合は、表19-9に指定されたコードの論理演算子ORによる組合せを戻します。

表19-9 OCIIntervalCheck()の有効なパラメータによって戻されるエラー・ビット

マクロ名 ビット数 エラー

OCI_INTER_INVALID_DAY

0x1

無効な日。

OCI_INTER_DAY_BELOW_VALID

0x2

無効な日の、有効な日に対する大/小を示すビット(1=小)。

OCI_INTER_INVALID_MONTH

0x4

無効な月。

OCI_INTER_MONTH_BELOW_VALID

0x8

無効な月の、有効な月に対する大/小を示すビット(1=小)。

OCI_INTER_INVALID_YEAR

0x10

無効な年。

OCI_INTER_YEAR_BELOW_VALID

0x20

無効な年の、有効な年に対する大/小を示すビット(1=小)。

OCI_INTER_INVALID_HOUR

0x40

無効な時刻(時)。

OCI_INTER_HOUR_BELOW_VALID

0x80

無効な時刻(時)の、有効な時刻(時)に対する大/小を示すビット(1=小)。

OCI_INTER_INVALID_MINUTE

0x100

無効な時刻(分)。

OCI_INTER_MINUTE_BELOW_VALID

0x200

無効な時刻(分)の、有効な時刻(分)に対する大/小を示すビット(1=小)。

OCI_INTER_INVALID_SECOND

0x400

無効な時刻(秒)。

OCI_INTER_SECOND_BELOW_VALID

0x800

無効な時刻(秒)の、有効な時刻(秒)に対する大/小を示すビット(1=小)。

OCI_INTER_INVALID_FRACSEC

0x1000

無効な小数秒。

OCI_INTER_FRACSEC_BELOW_VALID

0x2000

無効な時刻(小数秒)の、有効な時刻(小数秒)に対する大/小を示すビット(1=小)

戻り値

OCI_SUCCESSOCI_INVALID_HANDLE (errNULLポインタの場合)、OCI_ERROR (エラーの場合)。

OCIIntervalCompare()

用途

2つの時間隔を比較します。

構文

sword OCIIntervalCompare (void          *hndl, 
                          OCIError      *err,
                          OCIInterval   *inter1, 
                          OCIInterval   *inter2, 
                          sword         *result );

パラメータ

hndl (IN)

OCIユーザー・セッション・ハンドルまたは環境ハンドルです。

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

inter1 (IN)

比較する時間隔です。

inter2 (IN)

比較する時間隔です。

result (OUT)

表19-10に指定したような比較結果です。

表19-10 OCIIntervalCompare()のresultパラメータによって戻される比較結果

比較結果 resultパラメータの出力

inter1 < inter2

-1

inter1 = inter2

0

inter1 > inter2

1

戻り値

OCI_SUCCESSOCI_INVALID_HANDLE (errNULLポインタの場合)、OCI_ERROR (入力値が相互に比較可能でない場合)。

関連関数

OCIIntervalAssign()

OCIIntervalDivide()

用途

時間隔をOracle NUMBERで除算して、時間隔を生成します。

構文

sword OCIIntervalDivide ( void         *hndl, 
                          OCIError     *err, 
                          OCIInterval  *dividend, 
                          OCINumber    *divisor, 
                          OCIInterval  *result );

パラメータ

hndl (IN)

OCIユーザー・セッション・ハンドルまたは環境ハンドルです。

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

dividend (IN)

除算する時間隔です。

divisor (IN)

dividendを除算するOracle NUMBERです。

result (OUT)

除算結果の時間隔(dividend / divisor)です。

戻り値

OCI_SUCCESSOCI_INVALID_HANDLE (errNULLポインタの場合)。

OCIIntervalFromNumber()

用途

Oracle NUMBERを時間隔に変換します。

構文

sword OCIIntervalFromNumber ( void               *hndl, 
                              OCIError           *err,
                              OCIInterval        *interval,
                              OCINumber          *number );

パラメータ

hndl (IN)

OCIユーザー・セッション・ハンドルまたは環境ハンドルです。

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

interval (OUT)

結果の時間隔です。

number (IN)

変換するOracle NUMBER (YEAR TO MONTH時間隔の場合は年数、DAY TO SECOND時間隔の場合は日数)です。

戻り値

OCI_SUCCESSOCI_INVALID_HANDLE (errNULLポインタの場合)。

OCIIntervalFromText()

用途

時間隔文字列が指定されている場合、その文字列で表現される時間隔を戻します。時間隔の型は、result記述子の型です。

構文

sword OCIIntervalFromText ( void           *hndl, 
                            OCIError       *err, 
                            const OraText  *inpstring,
                            size_t         str_len,
                            OCIInterval    *result );

パラメータ

hndl (IN)

OCIユーザー・セッション・ハンドルまたは環境ハンドルです。

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

inpstring (IN)

入力文字列です。

str_len (IN)

入力文字列の長さです。

result (OUT)

結果の時間隔です。

戻り値

OCI_SUCCESSOCI_INVALID_HANDLE (errNULLポインタの場合)、OCI_ERROR (次のいずれかの場合)。

  • リテラル文字列のフィールドが多すぎる場合。

  • 年が範囲(–4713から9999)外の場合。

  • 月が範囲(1から12)外の場合。

  • 1か月の日が範囲(1から28...31)外の場合。

  • 時間が範囲(0から23)外の場合。

  • 時間が範囲(0から11)外の場合。

  • 分が範囲(0から59)外の場合。

  • 1分の秒が範囲(0から59)外の場合。

  • 1日の秒が範囲(0から86399)外の場合。

  • 時間隔が無効な場合。

関連関数

OCIIntervalToText()

OCIIntervalFromTZ()

用途

OCIIntervalデータ型のOCI_DTYPE_INTERVAL_DSを、設定されているリージョンID (入力文字列にリージョンが指定されている場合)と現行の絶対オフセット、またはリージョンIDが0 (ゼロ)に設定されている絶対オフセットとともに戻します。

構文

sword OCIIntervalFromTZ ( void           *hndl, 
                          OCIError       *err, 
                          const oratext  *inpstring,
                          size_t         str_len, 
                          OCIInterval    *result ) ;

パラメータ

hndl (IN)

OCIユーザー・セッション・ハンドルまたは環境ハンドルです。

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

inpstring (IN)

入力文字列へのポインタです。

str_len (IN)

inpstringの長さです。

result (OUT)

出力時間隔です。

戻り値

OCI_SUCCESS (成功した場合)、OCI_INVALID_HANDLE (errがNULLの場合)、OCI_ERROR (無効な時間隔型、またはタイム・ゾーン・エラーがある場合)。

コメント

入力文字列は、[+/-]TZH:TZMまたは'TZR [TZD]'の形式であることが必要です。

OCIIntervalGetDaySecond()

用途

時間隔から日、時、分、秒の値を取得します。

構文

sword OCIIntervalGetDaySecond (void               *hndl, 
                               OCIError           *err, 
                               sb4                *dy, 
                               sb4                *hr,
                               sb4                *mm, 
                               sb4                *ss, 
                               sb4                *fsec, 
                               const OCIInterval  *interval );

パラメータ

hndl (IN)

OCIユーザー・セッション・ハンドルまたは環境ハンドルです。

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

dy (OUT)

日数です。

hr (OUT)

時間数です。

mm (OUT)

分数です。

ss (OUT)

秒数です。

fsec (OUT)

ナノ秒数です。

interval (IN)

入力時間隔です。

戻り値

OCI_SUCCESSOCI_INVALID_HANDLE (errNULLポインタの場合)。

OCIIntervalGetYearMonth()

用途

時間隔から年と月を取得します。

構文

sword OCIIntervalGetYearMonth ( void               *hndl, 
                                OCIError           *err, 
                                sb4                *yr,
                                sb4                *mnth,
                                const OCIInterval  *interval );

パラメータ

hndl (IN)

OCIユーザー・セッション・ハンドルまたは環境ハンドルです。

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

yr (OUT)

年の値です。

mnth (OUT)

月の値です。

interval (IN)

入力時間隔です。

戻り値

OCI_SUCCESSOCI_INVALID_HANDLE (errNULLポインタの場合)。

OCIIntervalMultiply()

用途

時間隔をOracle NUMBERで乗算して、時間隔を生成します。

構文

sword OCIIntervalMultiply ( void               *hndl, 
                            OCIError           *err, 
                            const OCIInterval  *inter,
                            OCINumber          *nfactor,
                            OCIInterval        *result );

パラメータ

hndl (IN)

OCIユーザー・セッション・ハンドルまたは環境ハンドルです。

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

inter (IN)

乗算する時間隔です。

nfactor (IN)

乗算するOracle NUMBERです。

result (OUT)

乗算結果の時間隔(inter * nfactor)です。

戻り値

OCI_SUCCESSOCI_INVALID_HANDLE (errNULLポインタの場合)、OCI_ERROR (次のいずれかの場合)。

  • 結果の年がSB4MAXVALを超える場合。

  • 結果の年がSB4MINVALを下回る場合。

関連関数

OCIIntervalDivide()

OCIIntervalSetDaySecond()

用途

時間隔に日、時、分、秒を設定します。

構文

sword OCIIntervalSetDaySecond ( void               *hndl, 
                                OCIError           *err, 
                                sb4                dy,
                                sb4                hr,
                                sb4                mm, 
                                sb4                ss, 
                                sb4                fsec, 
                                OCIInterval        *result );

パラメータ

hndl (IN)

OCIユーザー・セッション・ハンドルまたは環境ハンドルです。

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

dy (IN)

日数です。

hr (IN)

時間数です。

mm (IN)

分数です。

ss (IN)

秒数です。

fsec (IN)

ナノ秒数です。

result (OUT)

結果の時間隔です。

戻り値

OCI_SUCCESSOCI_INVALID_HANDLE (errNULLポインタの場合)。

OCIIntervalSetYearMonth()

用途

時間隔に年と月を設定します。

構文

sword OCIIntervalSetYearMonth ( void               *hndl, 
                                OCIError           *err, 
                                sb4                yr,
                                sb4                mnth,
                                OCIInterval        *result );

パラメータ

hndl (IN)

OCIユーザー・セッション・ハンドルまたは環境ハンドルです。

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

yr (IN)

年の値です。

mnth (IN)

月の値です。

result (OUT)

結果の時間隔です。

戻り値

OCI_SUCCESSOCI_INVALID_HANDLE (errNULLポインタの場合)、OCI_ERROR (次のいずれかの場合)。

  • 結果の年がSB4MAXVALを超える場合。

  • 結果の年がSB4MINVALを下回る場合。

OCIIntervalSubtract()

用途

2つの時間隔を減算し、その結果を時間隔に格納します。

構文

sword OCIIntervalSubtract ( void         *hndl,
                            OCIError     *err, 
                            OCIInterval  *minuend, 
                            OCIInterval  *subtrahend,
                            OCIInterval  *result );

パラメータ

hndl (IN)

OCIユーザー・セッション・ハンドルまたは環境ハンドルです。

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

minuend (IN)

減算される時間隔です。

subtrahend (IN)

minuendから減算する時間隔です。

result (OUT)

減算結果の時間隔(minuend - subtrahend)です。

戻り値

OCI_SUCCESSOCI_INVALID_HANDLE (errNULLポインタの場合)、OCI_ERROR (次のいずれかの場合)。

  • 結果の年がSB4MAXVALを超える場合。

  • 結果の年がSB4MINVALを下回る場合。

  • 入力された2つの時間隔が相互に比較可能でない場合。

関連関数

OCIIntervalAdd()

OCIIntervalToNumber()

用途

時間隔をOracle NUMBERに変換します。

構文

sword OCIIntervalToNumber ( void               *hndl, 
                            OCIError           *err,
                            OCIInterval        *interval,
                            OCINumber          *number );

パラメータ

hndl (IN)

OCIユーザー・セッション・ハンドルまたは環境ハンドルです。

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

interval (IN)

変換する時間隔です。

number (OUT)

Oracle NUMBERの変換結果(YEARMONTH時間隔の年、およびDAYSECONDの日)です。

コメント

変換されたOracle NUMBERには、日付の小数部分(たとえば、選択した単位が時間の場合は分と秒)が含まれます。精度を超える部分は切り捨てられます。

戻り値

OCI_SUCCESSOCI_INVALID_HANDLE (errNULLポインタの場合)。

OCIIntervalToText()

用途

時間隔が指定されている場合、その時間隔を表現する文字列を生成します。

構文

sword OCIIntervalToText ( void               *hndl,
                          OCIError           *err,
                          const OCIInterval  *interval,
                          ub1                lfprec,
                          ub1                fsprec,
                          OraText            *buffer, 
                          size_t             buflen,
                          size_t             *resultlen );

パラメータ

hndl (IN)

OCIユーザー・セッション・ハンドルまたは環境ハンドルです。

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

interval (IN)

変換する時間隔です。

lfprec (IN)

先行フィールド精度を指定します。(先行フィールドを表すのに使用される桁数です)。

fsprec (IN)

時間隔の小数秒精度(小数秒を表すのに使用される桁数)です。

buffer (OUT)

結果を保持するバッファです。

buflen (IN)

bufferの長さです。

resultlen (OUT)

bufferに格納された結果の長さです。

コメント

時間隔リテラルは、INTERVAL YEAR TO MONTH時間隔の'年'または'[年-]月'、およびINTERVAL DAY TO SECOND時間隔の'秒'、'分[:秒]'、'時間[:分[:秒]]'または'日[ 時間[:分[:秒]]]'として出力されます(大カッコで囲まれているフィールドはオプションです)。

戻り値

OCI_SUCCESSOCI_INVALID_HANDLE (errNULLポインタの場合)、OCI_ERROR (バッファ領域が不足しているため結果を保持できない場合)。