この記事では、SQL Serverの日付と時刻のデータ型を、範囲、精度、およびストレージサイズに関して並べて比較します。
範囲 | 精度 | ストレージサイズ | |
---|---|---|---|
日付 | 0001-01-01 から 9999-12-31 | 1日 | 3バイト |
日時 | 1753-01-01 から 9999-12-31 00:00:00 から 23:59:59.997 | 0.00333秒 | 8バイト |
datetime2 | 0001-01-01 から 9999-12-31 00:00:00 から 23:59:59.9999999 | 100ナノ秒 | 6〜8バイト* |
datetimeoffset | 0001-01-01 から 9999-12-31 00:00:00 から 23:59:59.9999999 -14:00 から +14:00 | 100ナノ秒 | 8〜10バイト* |
smalldatetime | 1900-01-01 から 2079-06-06 00:00:00 から 23:59:59 | 1分 | 4バイト |
時間 | 00:00:00.0000000 から 23:59:59.9999999 | 100ナノ秒 | 3〜5バイト* |
*ここに記載されているストレージ量は、Microsoftのドキュメントに記載されている量であることに注意してください。ただし、これらのデータ型も1バイトを使用して精度を格納します。したがって、ストレージ要件のより完全な全体像を把握するには、ここにリストされている量に1バイトを追加してください。
たとえば、 datetime2のストレージサイズ 余分なバイトを含めると、7〜9バイトの範囲になります。
これらのタイプのデータ間の変換
これらのデータ型の間では精度と範囲が異なるため、これらの間で変換する場合は特に注意する必要があります。特に、高精度タイプから低精度タイプに変換すると、値の一部が失われ、残りの値が切り上げられる可能性があります。
例については、SQLServerでの日付と時刻のデータ型間の変換を確認してください。