日付と時刻の強化機能
このトピックでは、SQL Server 2008 で追加された日付と時刻のデータ型のSQL Server Native Clientのサポートについて説明します。
日付/時刻の機能強化の詳細については、「日付と時刻の機能強化 (OLE DB)」および「日付と時刻の機能強化 (ODBC)」を参照してください。
この機能を説明するサンプル アプリケーションについては、「SQL Server データ プログラミング サンプル」を参照してください。
使用法
ここでは、新しい日付型と時刻型のさまざまな使用方法について説明します。
個別のデータ型として日付を使用する
SQL Server 2008 以降では、日付/時刻型のサポートが強化され、SQL_TYPE_DATE ODBC 型 (ODBC 2.0 アプリケーションの場合はSQL_DATE) と DBTYPE_DBDATE OLE DB 型の使用がより効率的になります。
個別のデータ型として時刻を使用する
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 DB でも既に、有効桁数が 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) でサポートされています。
既存の変換と一貫性のあるクライアント側変換で Date/Time/Datetime/Datetimeoffset データを使用する
ODBC 標準では、既存の date 型、time 型、および timestamp 型の間の変換のしくみについて説明します。 これらは、SQL Server 2008 で導入されたすべての日付と時刻の型間の変換を含むように一貫した方法で拡張されます。