DETECTDATE

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

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

重要: DETECTDATE は他の方法がない場合に限り慎重に使用してください。DETECTDATE を使用する前に、ここで示されているすべてのオプション、HCOSS の日付時刻のデータ型の処理に提供されているすべての情報、DATE および TIME のトピックにある情報を注意深く検証し、アプリケーションに最適なオプションを決定してください。

構文:

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

パラメーター:

CLIENT
DBMAN=ODBC または DBMAN=ADO適用されます。
入力ホスト変数
PIC X 文字入力ホスト変数では、HCOSS は指定された datetime フォーマットを認識し、処理するためにそのデータを SQL Server で受け入れ可能なフォーマットに変換します。入力ホスト変数に指定される datetime フォーマットは次のとおりです。
Date
メインフレームのデフォルト。DATE HCOSS 指令を指定することでオーバーライドできます。
Time
メインフレームのデフォルト。TIME HCOSS 指令を指定することでオーバーライドできます。
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 出力文字ホスト変数の場合、HCOSS は次の datetime フォーマットで出力ホスト変数のデータを返します。
Date
メインフレームのデフォルト。DATE HCOSS 指令を指定することでオーバーライドできます。
Time
メインフレームのデフォルト。TIME HCOSS 指令を指定することでオーバーライドできます。
Timestamp
yyyy-mm-dd-hh.mm.ss.ffffff
SQLTYPE
注:Enterprise Developer バージョン 2.3 以降では非推奨の機能で、下位互換性のために提供されています。SQLTYPE ホスト変数の datetime 処理は DETECTDATE に依存しません。
DBMAN=ODBC または DBMAN=ADO に適用されます。処理は CLIENT オプションと同一ですが、SQLTYPE ホスト変数のみに適用され PIC X には適用されません。
SERVER
SQL Server バージョン 2012 以降の DBMAN=ODBC または DBMAN=ADO に適用されます。

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

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

プロパティ:

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

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

範囲:

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

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

コメント:

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