このトピックでは、SQL Server 2008 で追加された日付と時刻のデータ型に対する SQL Server Native Client のサポートについて説明します。
日付/時刻の機能強化の詳細については、「 日付と時刻の機能強化 (OLE DB) 」および 「日付と時刻の機能強化 (ODBC)」を参照してください。
この機能を示すサンプル アプリケーションの詳細については、「 SQL Server データ プログラミング サンプル」を参照してください。
使用方法
次のセクションでは、新しい日付と時刻の種類を使用するさまざまな方法について説明します。
日付を個別のデータ型として使用する
SQL Server 2008 以降では、日付/時刻型のサポートが強化されているため、SQL_TYPE_DATE ODBC 型 (ODBC 2.0 アプリケーションの場合はSQL_DATE) と ole DB 型DBTYPE_DBDATEを使用する方が効率的になります。
時刻を個別のデータ型として使用する
OLE DB には、1 秒の有効桁数を持つ時間 (DBTYPE_DBTIME) のみを含むデータ型が既に用意されています。 ODBC では、同等の型はSQL_TYPE_TIMEです (ODBC 2.0 アプリケーションの場合はSQL_TIME)。
新しい SQL Server 時刻データ型には、秒の小数部が 100 ナノ秒に正確です。 これには、SQL Server Native Client の新しい型 (DBTYPE_DBTIME2 (OLE DB) と SQL_SS_TIME2 (ODBC) が必要です。 秒未満の時刻を使用するように書き込まれた既存のアプリケーションでは、time(0) 列を使用できます。 アプリケーションがメタデータで返される型に依存しない限り、既存の OLE DB DBTYPE_TIMEおよび ODBC SQL_TYPE_TIME型とそれに対応する構造体は正常に動作します。
秒の小数部の有効桁数が拡張された個別のデータ型として時間を使用する
プロセス制御や製造アプリケーションなどの一部のアプリケーションでは、最大 100 ナノ秒の精度で時間データを処理する機能が必要です。 この目的の新しい型は、DBTYPE_DBTIME2 (OLE DB) と SQL_SS_TIME2 (ODBC) です。
Datetime を使用して秒の小数部の有効桁数を拡張する
OLE DB では、最大 1 ナノ秒の有効桁数を持つ型が既に定義されています。 ただし、この型は既存の SQL Server アプリケーションで既に使用されており、このようなアプリケーションでは 1/300 秒の精度しか期待しません。 新しい datetime2(3) 型は、既存の datetime 型と直接互換性がありません。 これがアプリケーションの動作に影響するリスクがある場合、アプリケーションは新しい DBCOLUMN フラグを使用して、実際のサーバーの種類を判別する必要があります。
ODBC では、最大 1 ナノ秒の精度を持つ型も定義されます。 ただし、この型は既存の SQL Server アプリケーションで既に使用されており、このようなアプリケーションでは 3 ミリ秒の精度しか必要とされません。 新しい datetime2(3) 型は、既存の datetime 型と直接互換性がありません。
datetime2(3) の有効桁数は 1 ミリ秒で、 datetime の有効桁数は 1/300 秒です。 ODBC では、アプリケーションは記述子フィールド SQL_DESC_TYPE_NAMEで使用されているサーバーの種類を決定できます。 そのため、既存の型SQL_TYPE_TIMESTAMP (ODBC 2.0 アプリケーションの場合はSQL_TIMESTAMP) を両方の型に使用できます。
Datetime を使用し、秒の小数部の有効桁数とタイムゾーンを拡張する
一部のアプリケーションでは、タイムゾーン情報を含む datetime 値が必要です。 これは、新しい DBTYPE_DBTIMESTAMPOFFSET (OLE DB) 型と SQL_SS_TIMESTAMPOFFSET (ODBC) 型でサポートされています。
既存の変換と一貫性のある Client-Side 変換で Date/Time/Datetime/Datetimeoffset データを使用する
ODBC 標準では、既存の日付、時刻、およびタイムスタンプ型間の変換のしくみについて説明します。 これらは一貫した方法で拡張され、SQL Server 2008 で導入されたすべての日付と時刻の型間の変換が含まれます。