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