SQL Server 2008 提供多种日期时间类型供我们选择。

以下是各个时间类型的汇总:

数据类型

格式

取值范围

精度

存储尺寸

date

yyyy-mm-dd

0001-1-1

9999-12-31

1天

3字节

time

hh:mm:ss.nnnnnn

0:0:0.000000

23:59:59.999999

100纳秒

3-5字节

smalldatetime

yyyy-mm-dd

hh:mm:ss

1900-1-1

2079-6-6

1分钟

4字节

datetime

yyyy-mm-dd

hh:mm:ss:nnn

1753-1-1

9999-12-31

0.00333秒

8字节

datetime2

yyyy-mm-dd

hh:mm:ss:nnnnnn

0001-1-1

9999-12-31

100纳秒

6-8字节

datetimeoffset

yyyy-mm-dd

hh:mm:ss:nnnnnn

+|- hh:mm

0001-1-1

9999-12-31

(全球标准时间)

100纳秒

8-10字节


为了使用这些数据类型,SQL Server 2008 同时还引入了一系列的T-SQL函数。

1.1  三个用于获得高精度系统时间的函数

     SYSDATETIME:返回运行SQL Server 实例的服务器的本地时间,数据类型是datetime2(7),不包含时区信息。

     SYSDATETIMEOFFSET:返回运行SQL Server 实例的服务器的本地时间及时区信息,数据类型是datetimeoffset(7)。

     SYSUTCDATETIME:返回运行SQL Server 实例的服务器的标准世界时间,数据类型是datetime2(7)。

1.2  用于时区转换的函数:

     SWITCHOFFSET(datetimeoffset, time_zone):根据输入的世界时间以及时区信息返回某个特定时区的数据,例如SWITCHOFFSET('2008-1-1 0:0:0 + 8:00', '-07:00')返回值将是'2007-12-31 9:00 -07:00'。

     TODATETIMEOFFSET(datetime, offset):根据输入的日期时间参数值和时区参数值返回一个世界时间值。例如TODATETIMEOFFSET('2008-1-1 0:0:0', '+08:00')返回值是'2008-1-1 0:0:0 + 08:00'。