在SQL Server 2008之前,SQL Server支持两种表示时间的数据类型:DATETIME和SMALLDATETIME。这两种类型都包括了日期和时间组成部分,而且这两部分是不能分开的。它们在存储需求、支持的日期范围,以及日期的精度上都有所不同。SQL Server 2008新引入了DATE、TIME、DATETIME2和DATETIMEOFFSET数据类型。DATE是单独表示日期的数据类型,TIME是单独表示时间的数据类型,DATETIME2是一种比DATETIME具有更大的日期范围和更好的精度的日期类型,DATETIMEOFFSET具有一个时区组成部分。下表列出了每种日期和时间数据类型的详细信息,包括存储大小、支持的日期范围、精确度,以及推荐的表示格式。
数据类型 |
存储大小(字节) |
日期范围 |
准确度 |
推荐格式及示例 |
DATETIME |
8 |
1753-01-01到 9999-12-31 |
3.33毫秒 |
'YYYYMMDD hh:mm:ss.nnn' '20090212 12:30:15.123' |
SMALLDATETIME |
4 |
1900-01-01到 2079-06-06 |
1分钟 |
'YYYYMMDD hh:mm' '20090212 12:30' |
DATE |
3 |
0001-01-01到 9999-12-31 |
1天 |
'YYYY-MM-DD' |
TIME |
3到5 |
00:00:00.0000000到23:59:59.9999999 |
100纳秒 |
'hh:mm:ss.nnnnnnn' '12:30:15.1234567' |
DATETIME2 |
6到8 |
0001-01-01 00:00:00.0000000到9999-12-31 23:59:59.9999999 |
100纳秒 |
'YYYY-MM-DD hh:mm:ss.nnnnnnn' '2009-02-12 12:30:15.1234567' |
DATETIMEOFFSET |
8到10 |
0001-01-01 00:00:00.0000000到9999-12-31 23:59:59.9999999 |
100纳秒 |
'YYYY-MM-DD hh:mm:ss.nnnnnnn [+|-] hh:mm' '2009-02-12 12:30:15.1234567 +02:00' |