日付/時刻の強化
このトピックでは、SQL Server 2008 に追加された新しい日付と時刻のデータ型のために SQL Server Native Client 10.0 に追加されたサポートについて説明します。
日付と時刻の強化の詳細については、「日付/時刻の強化 (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 で導入されたすべての日付型と時刻型との間の変換を含めるように一貫して拡張されます。