DETECTDATE

メインフレーム DB2 アプリケーションでの PIC X 文字入力ホスト変数の datetime の値に、PostgreSQL でサポートされているフォーマットとは別のフォーマットを使用できるようにします。
制約事項: 本トピックは、HCOPG SQL コンパイラ指令オプション DETECTDATE にのみ該当します。OpenESQL SQL コンパイラ指令オプション DETECTDATE の使用の詳細については、「SQL コンパイラ指令オプション」の「DETECTDATE」を参照してください。
DETECTDATE により、入力ホスト変数の代替フォーマットを指定できます。HCOPG は、DETECTDATE で指定されたフォーマットと PostgreSQL で認識されるフォーマットとの間の変換を管理します。これは、SQL 呼び出しごとに入出力の両方で行われます。

たとえば、PostgreSQL では、「HCOPG の日付時刻のデータ型の処理」に記載のとおり、datetime フィールド用にフォーマットされた値がサポートされています。PostgreSQL でサポートされていない datetime フォーマット (EUR など) を使用するメインフレーム DB2 アプリケーションでは、PostgreSQL データベースでそれらのフォーマットを使用できない場合でも、DETECTDATE を使用して PostgreSQL データベースに対してそれを実行することで、EUR の datetime フォーマットをそのまま残すことできます。

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

構文:

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

パラメーター:

CLIENT
DBMAN=ODBC にのみ適用されます。
入力ホスト変数
PIC X 文字入力ホスト変数では、HCOPG は指定された datetime フォーマットを認識し、処理するためにそのデータを PostgreSQL で使用できるフォーマットに変換します。入力ホスト変数に指定される datetime フォーマットは次のとおりです。
Date
メインフレームのデフォルト。DATE HCOPG 指令を指定することでオーバーライドできます。
Time
メインフレームのデフォルト。TIME HCOPG 指令を指定することでオーバーライドできます。
Timestamp
  • 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
出力ホスト変数
PIC X および SQLTYPE 出力文字ホスト変数の場合、HCOPG は次の datetime フォーマットで出力ホスト変数のデータを返します。
Date
メインフレームのデフォルト。DATE HCOPG 指令を指定することでオーバーライドできます。
Time
メインフレームのデフォルト。TIME HCOPG 指令を指定することでオーバーライドできます。
Timestamp
yyyy-mm-dd-hh.mm.ss.ffffff
SQLTYPE
DBMAN=ODBC にのみ適用されます。処理は CLIENT オプションと同一ですが、SQLTYPE ホスト変数のみに適用され PIC X には適用されません。
SERVER
DBMAN=ODBC にのみ適用されます。

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

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

プロパティ:

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

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

範囲:

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

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

説明:

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