OpenESQL は、デフォルトで DBMS 内の datetime 列に関連付けられたすべての入力および出力文字ホスト変数に対して ODBC/ISO 8601 形式をサポートします。
たとえば、SQL Server DBMS を使用する場合、文字ホスト変数のデフォルトのデータ型形式は、次のとおりです。
SQL Server データ型 | ODBC/ISO 8601 形式 |
---|---|
date | yyyy-mm-dd |
time | hh:mm:ss |
datetime2 | yyyy-mm-dd hh:mm:ss.ffffffff |
SQL Server に加えて、これらの形式は ISO8601 形式を受け入れる他の DBMS ベンダーにも一般的に適用されます。OpenESQL は入力および出力文字ホスト変数の両方に関して、代替形式をサポートしています。デフォルトを上書きする代替形式を指定できるようにする SQL コンパイラ指令のオプションをいくつか提供します。
DETECTDATE SQL コンパイラ オプション指令は、PIC X 文字入力ホスト変数の内容を確認するように OpenESQL に指示し、デフォルトの ISO8601 形式に一致するデータを検索します。1 つ以上の追加指令を指定することで、デフォルトの形式を上書きできます。
The dash character instructs OpenESQL to look for a specific set of delimiters, including a dash, a space, and a T. For example if you do not specify any alternative date or time formats, and you set TSTAMPSEP to a dash character (-), OpenESQL recognizes the following formats in your input host variables:
All other characters instruct OpenESQL to search for that specific character between each date and time format, where the date portion is delimited by a dash character (-) and the time portion is delimited by a colon (:).
TSTAMPSEP を指定しないと、OpenESQL はデフォルトで日付と時刻形式の間でその特定の文字を探します。その場合、日付部はダッシュ文字 (-) で区切られ、時刻部はコロン (:) で区切られます。
シナリオ | DETECTDATE オプション |
---|---|
アプリケーションが PIC X 入力ホスト変数に date、time、および datetime の値を使用しますが、サポートされている ODBC/ ISO8601 形式に満足しており、代替形式は使用しません。 | 必要なし。1 |
アプリケーションが PIC X 入力ホスト変数で date、time、および datetime の値を使用しますが、それらの値はデータベース内の date、time、または datetime 列でのみ使用します。 | CLIENT |
アプリケーションが PIC X 入力ホスト変数で date、time、および datetime の値に ODBC エスケープ シーケンスを使用しますが、それらの値はデータベース内の date、time、または datetime 列でのみ使用します。 | CLIENT |
アプリケーションが PIC X 入力ホスト変数で date、time、および datetime の値を使用しますが、それらの値はデータベース内の character 列でのみ使用します。また、SQL は、date、time、または datetime2 データ型に対して、暗黙的な文字または明示的な文字のいずれも使用しません。 | 必要なし。DETECTDATE、DATE、または TIME SQL コンパイラ指令オプションを使用しません。 |
date、time、および datetime 列で使用するのは SQLTYPE ホスト変数のみで、PIC X ホスト変数を date、time、または datetime 列で使用することはありません。 | 必要なし。2 |
アプリケーションが PIC X 入力ホスト変数で date、time 、および datetime の値を使用します。さらに、データベースの character 列と date、time、および datetime 列の両方でそれらの値を使用し、character 列は、date、time 、または datetime 値と混同される可能性のある形式のデータを使用する場合があります。 | SERVER |
1Oracle で TIME 値も使用する場合は、DETECTDATE を使用することをお勧めします。 |