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