SQL Server 2008除了DateTime和SmallDateTime之外,又新增了四种时间类型,分别为:date,time,datetime2和datetimeoffset。
各时间类型范围、精度一览表:
数据类型
|
时间范围
|
精度
|
datetime
|
1753-01-01 到 9999-12-31
00:00:00 到 23:59:59.997
|
3.33毫秒
|
smalldatetime
|
1900-01-01 到 2079-06-06
00:00:00 到 23:59:59
|
分钟
|
date
|
0001-01-01 到 9999-12-31
|
天
|
time
|
00:00:00.0000000 到 23:59:59.9999999
|
100纳秒
|
datetime2
|
0001-01-01 到 9999-12-31
00:00:00 到 23:59:59.9999999
|
100 纳秒
|
datetimeoffset
|
0001-01-01 到 9999-12-31
00:00:00 到 23:59:59.9999999
-14:00 到 +14:00
|
100 纳秒
|
各时间类型表达式一览表:
数据类型
|
输出
|
time
|
12:35:29.1234567
|
date
|
2007-05-08
|
smalldatetime
|
2007-05-08 12:35:00
|
datetime
|
2007-05-08 12:35:29.123
|
datetime2
|
2007-05-08 12:35:29.1234567
|
datetimeoffset
|
2007-05-08 12:35:29.1234567 +12:15
|
Datetime数据类型之datetime2和datetimeoffset数据类型
SQL Server 2008 中新的日期时间类型:datetime2和datetimeoffset数据类型。
datetime2数据类型,类似于之前的datetime类型,不过其精度比较高,可以精确到小数点后面7位(100ns),其使用语法为:datetime2(n)。使用示例:
declare @dt as datetime2(5)
set @dt = getdate()
select @dt
datetimeoffset数据类型,加入了时区偏移量部分,时区偏移量表示为 [+|-] HH:MM。 HH 是范围从 00 到 14 的 2 位数,表示时区偏移量的小时数。 MM 是范围从 00 到 59 的 2 位数,表示时区偏移量的附加分钟数。 时间格式支持到最小 100 毫微秒。 必需的 + 或 - 符号指示在 UTC(通用协调时间或格林尼治标准时间)中是加上还是减去时区偏移量以获取本地时间。使用示例:
declare @dt as datetimeoffset(8)
set @dt = '2008-08-08 08:08:08.0 +8:00'
select @dt
和CLR数据类型之间的映射关系:
SQL数据类型
|
.NET Framework类型
|
System.Data.SqlDbType
|
System.Data.DbType
|
date
|
System.DateTime
|
Date
|
Date
|
time
|
System.TimeSpan
|
Time
|
Time
|
datetime2
|
System.DateTime
|
DateTime2
|
DateTime2
|
datetimeoffset
|
System.DateTimeOffset
|
DateTimeOffset
|
DateTimeOffset
|
datetime
|
System.DateTime
|
DateTime
|
DateTime
|
smalldatetime
|
System.DateTime
|
DateTime
|
DateTime
|