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 または DBMAN=ADO に適用されます。
入力ホスト変数
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 または DBMAN=ADO に適用されます。処理は CLIENT オプションと同一ですが、SQLTYPE ホスト変数にのみ適用され PIC X には適用されません。
SERVER
DBMAN=ODBC 、または DBMAN=ADO for SQL Server 2012 以降に適用されます。

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

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」を参照してください。