DETECTDATE

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

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

重要:DETECTDATE は他の方法がない場合に限り慎重に使用してください。DETECTDATE を使用する前に、ここに示されるすべてのオプション、『OpenESQL Datetime Data Types Handling』に提供されるすべての情報、『DATE』『DATEDELIM』『TIME』『TIMEDELIM』の各トピックにある情報を検証し、アプリケーションに最適なオプションを検討してください。

構文:

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

パラメータ:

CLIENT
DBMAN=ODBC のみに適用されます
入力ホスト変数
PIC X と SQLTYPE 文字入力ホスト変数では、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 と SQLTYPE 出力文字ホスト変数の場合、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
DBMAN=ODBC のみに適用されます。処理は CLIENT オプションと同一ですが、SQLTYPE ホスト変数のみに適用され PIC X には適用されません。
SERVER
DBMAN=ODBC のみに適用されます。

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

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

プロパティ:

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

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

範囲:

コンパイル時の使用: あり
ランタイムの動作: ソース・ファイル

詳細は、『Scope - OpenESQL Compiler Directive Options』を参照してください。

コメント:

  • OpenESQL が DBMS の日付、時刻または datetime フィールドのどの代替フォーマットにも一致するデータを保存するためにデータベースで文字列を使わない場合のみに、DETECTDATE=CLIENT を使用します。
  • SQLTYPE ホスト変数をデータベースの datetime 列で使用し、PIC X 変数を文字列で使用するとき、DETECTDATE=SQLTYPE を使用します。
  • OpenESQL アプリケーションがデータベースでテーブルの datetime 列と文字列の両方で datetime 値を使用するとき、DETECTDATE=SERVER を使用します。
    注: DETECTDATE=SERVER を使用すると、OpenESQL は該当する SQL 文ごとに追加のオーバーヘッド処理を実行するようになります。
  • DATE、DATEDELIM、TIME、および/または TIMEDELIM 指令を指定することで datetime フォーマットを明示的に定義しない限り、datetime フォーマットは暗黙的に定義されます。詳細は、『DATE』『TIME』『DATEDELIM』、および 『TIMEDELIM』 を参照してください。