DETECTDATE

OpenESQL アプリケーションでの PIC X 文字入力ホスト変数の datetime の値に、ISO 8601 の標準フォーマットとは別のフォーマットを使用できるようにします。
DETECTDATE によって、入力ホスト変数の代替フォーマットを指定できます。OpenESQL は、DETECTDATE で指定されたフォーマットと DBMS で認識されるフォーマット間の変換を管理します。これは、SQL 呼び出しごとに入出力の両方で行われます。

たとえば、日付および時刻データに標準の ISO フォーマットでなく EUR フォーマットを使用することが望ましい場合があります。

重要: DETECTDATE は、どうしても必要な場合にのみ、慎重に使用してください。DETECTDATE を使用する前に、ここに示されるすべてのオプション、「OpenESQL 日付時刻データ型の処理」に記載のすべての情報、「DATE」、「DATEDELIM」、「TIME」、「TIMEDELIM」の各トピックにある情報を検証し、アプリケーションに最適なオプションを検討してください。

構文:

[NO]DETECTDATE
DETECTDATE={CLIENT | SQLTYPE | SERVER | PICX}

パラメーター:

CLIENT
DBMAN=ODBC にのみ適用されます。
入力ホスト変数
PIC X 文字入力ホスト変数の場合、OpenESQL は指定された datetime フォーマットを認識し、そのデータを DBMS で許容される ISO 8601 フォーマットに変換します。入力ホスト変数に指定される datetime フォーマットは次のとおりです。
Date
デフォルトの ISO 8601 フォーマット。DATE 指令または DATEDELIM 指令 (あるいはその両方) を指定することでオーバーライドできます。
Time
デフォルトの ISO 8601 フォーマット。TIME 指令または TIMEDELIM 指令 (あるいはその両方) を指定することでオーバーライドできます。
Datetime
デフォルトの ISO 8601 フォーマット。TSTAMPSEP 指令を指定することでオーバーライドできます。

ダッシュ文字は、ダッシュ、スペース、T などの特定の区切り文字セットを探すように OpenESQL に指示します。たとえば、日付または時刻の代替フォーマットを指定せず、TSTAMPSEP をダッシュ文字 (-) に設定すると、OpenESQL は入力ホスト変数で次のフォーマットを認識します。

  • yyyy-mm-dd-hh.mm.ss.ffffff
  • yyyy-mm-dd hh.mm.ss.ffffff
  • yyyy-mm-dd hh:mm:ss.ffffff
  • yyyy-mm-ddThh.mm.ss.ffffff
  • yyyy-mm-ddThh:mm:ss.ffffff

他のすべての文字は、各日付および時刻フォーマットの間でその特定の文字を探すように OpenESQL に指示します。その場合、日付部はダッシュ文字 (-) で区切られ、時刻部はコロン (:) で区切られます。

出力ホスト変数
PIC X 出力文字ホスト変数の場合、OpenESQL は次の datetime フォーマットで出力ホスト変数のデータを返します。
Date
デフォルトの ISO 8601 フォーマット。DATE 指令または DATEDELIM 指令 (あるいはその両方) を指定することでオーバーライドできます。
Time
デフォルトの ISO 8601 フォーマット。TIME 指令または TIMEDELIM 指令 (あるいはその両方) を指定することでオーバーライドできます。
Timestamp
デフォルトの ISO 8601 フォーマット。TSTAMPSEP 指令を指定することでオーバーライドできます。TSTAMPSEP をダッシュ (-) 文字 (TSTAMPSEP="-") に設定すると、OpenESQL は datetime 列を次のフォーマットで返します。

yyyy-mm-dd-hh.mm.ss.ffffff

SQLTYPE
注: Enterprise Developer バージョン 2.3 以降では非推奨の機能です。下位互換性のためにのみ提供されています。SQLTYPE ホスト変数の日時処理は DETECTDATE に依存しなくなりました。
DBMAN=ODBC のみに適用されます。処理は CLIENT オプションと同一ですが、SQLTYPE ホスト変数のみに適用され PIC X には適用されません。
SERVER
DBMAN=ODBC のみに適用されます。

DBMS に対して SQLDescribeParam 呼び出しを発行し、どの入力ホスト変数および出力ホスト変数がデータベースの特定の文字の列または日時の列に関連付けられているかを特定します。日時の列に関連付けられているホスト変数は、CLIENT にリストされる日時のフォーマットを使用して変換されます。文字の列は変換されません。

PICX
CLIENT オプションと同じです。下位互換性のために提供されています。

プロパティ:

デフォルト: DETECTDATE を指定しない場合、デフォルトは次のようになります。NODETECTDATE

DETECTDATE を引数なしで指定する場合、デフォルトは次のようになります。DETECTDATE=CLIENT

範囲:

コンパイル時の使用: あり
実行時の動作: ソース ファイル

詳細については、「範囲 - OpenESQL SQL コンパイラ指令オプション」を参照してください。

説明:

  • OpenESQL アプリケーションが、データ (DBMS の日付、時刻、または datetime フィールドの任意の代替フォーマットに一致するデータ) の保存にデータベースの文字カラム (列) を使用しない場合にのみ、DETECTDATE=CLIENT を使用します。
  • OpenESQL アプリケーションがデータベースのテーブルの datetime カラムおよび文字カラムの両方で datetime 値を使用する場合は、DETECTDATE=SERVER を使用します。
    注: DETECTDATE=SERVER を使用すると、OpenESQL は該当する SQL 文ごとに追加のオーバーヘッド処理を実行します。
  • DATE、DATEDELIM、TIME、または TIMEDELIM 指令 (あるいはそれらの併用) を指定して datetime フォーマットを明示的に設定しない限り、datetime フォーマットは暗黙的に定義されます。詳細については、「DATE」、「TIME」、「DATEDELIM」、および「TIMEDELIM」を参照してください。