SQL Server 2008对日期时间类型的改进
2010-08-30 13:08
411 查看
在新版的SQL Server 2008中一口气增加了4种新的日期时间数据类型,包括:
Date:一个纯的日期数据类型。
Time:一个纯的时间数据类型。
DateTime2:新的日期时间类型,将精度提到到了100纳秒。
DateTimeOffset:新的日期时间类型,在DateTime2的基础上增加了时区部分。
下面是在SQL Server 2008中日期时间数据类型的一个简单汇总表:
为了使用这些数据类型,SQL Server 2008同时还引入了一系列的T-SQL函数。
三个用于获得高精度系统时间的函数(因为是这三个函数都是取的操作系统时间,所以精度仅能达到10毫秒):
SYSDATETIME:返回运行SQL Server实例的服务器的本地时间,数据类型是datetime2(7),不包含时区信息。
SYSDATETIMEOFFSET:返回运行SQL Server实例的服务器的本地时间及时区信息,数据类型是datetimeoffset(7)。
SYSUTCDATETIME:返回运行SQL Server实例的服务器的标准世界时间,数据类型是datetime2(7)。
用于时区转换的函数:
SWITCHOFFSET(datetimeoffset,time_zone):根据输入的世界时间以及时区信息返回某个特定时区的数据,例如SWITCHOFFSET('2008-1-1 0:0:0 + 8:00', '-07:00')返回值将是'2007-12-31 9:00 -07:00',这样我们就晓得我们元旦的时候老美的时间只是早上9:00。(有个有趣的情况是SWITCHOFFSET函数time_zone参数小时的前导0时不能省略的,就我们刚才用的那个例子如果time_zone参数写成'7:00'就会报错,必须写成'07:00',不过datetimeoffset数据里那个时区部分小时的前导0时可以省略的,也就是说'2008-1-1 0:0:0 + 8:00'和'2008-1-1 0:0:0 + 08:00'都是可以接受的,对于时区中分钟部分也是如此。不过建议大家养成良好的编码习惯,所有前导0都不要省略。)
TODATETIMEOFFSET(datetime,offset):根据输入的日期时间参数值和时区参数值返回一个世界时间值。例如TODATETIMEOFFSET('2008-1-1 0:0:0', '+08:00')返回值是'2008-1-1 0:0:0 + 08:00'。
顺便列举一下SQL Server 2005中已经提供的日期时间函数,不过就不做介绍了:
用于获取系统时间的函数:CURRENT_TIMESTAMP,GETDATE,GETUTCDATE
返回日期时间的指定部分:DATENAME,DATEPART,DAY,MONTH,YEAR
计算日期时间差异的函数:DATEDIFF, DATEADD (必须注意的是datetime、smalldatetime数据类型支持+和-运算符,但是对于date、time、datetime2、datetimeoffset则不支持。)
对日期时间进行计算的函数:DATEADD
设置日期时间显示格式的函数:@@DATEFIRST,SET DATEFIRST,SET DATEFORMAT,@@LANGUAGE,SET LANGUAGE,sp_helplanguage
用于确认日期时间数据格式的函数:ISDATE
Date:一个纯的日期数据类型。
Time:一个纯的时间数据类型。
DateTime2:新的日期时间类型,将精度提到到了100纳秒。
DateTimeOffset:新的日期时间类型,在DateTime2的基础上增加了时区部分。
下面是在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字节 |
三个用于获得高精度系统时间的函数(因为是这三个函数都是取的操作系统时间,所以精度仅能达到10毫秒):
SYSDATETIME:返回运行SQL Server实例的服务器的本地时间,数据类型是datetime2(7),不包含时区信息。
SYSDATETIMEOFFSET:返回运行SQL Server实例的服务器的本地时间及时区信息,数据类型是datetimeoffset(7)。
SYSUTCDATETIME:返回运行SQL Server实例的服务器的标准世界时间,数据类型是datetime2(7)。
用于时区转换的函数:
SWITCHOFFSET(datetimeoffset,time_zone):根据输入的世界时间以及时区信息返回某个特定时区的数据,例如SWITCHOFFSET('2008-1-1 0:0:0 + 8:00', '-07:00')返回值将是'2007-12-31 9:00 -07:00',这样我们就晓得我们元旦的时候老美的时间只是早上9:00。(有个有趣的情况是SWITCHOFFSET函数time_zone参数小时的前导0时不能省略的,就我们刚才用的那个例子如果time_zone参数写成'7:00'就会报错,必须写成'07:00',不过datetimeoffset数据里那个时区部分小时的前导0时可以省略的,也就是说'2008-1-1 0:0:0 + 8:00'和'2008-1-1 0:0:0 + 08:00'都是可以接受的,对于时区中分钟部分也是如此。不过建议大家养成良好的编码习惯,所有前导0都不要省略。)
TODATETIMEOFFSET(datetime,offset):根据输入的日期时间参数值和时区参数值返回一个世界时间值。例如TODATETIMEOFFSET('2008-1-1 0:0:0', '+08:00')返回值是'2008-1-1 0:0:0 + 08:00'。
顺便列举一下SQL Server 2005中已经提供的日期时间函数,不过就不做介绍了:
用于获取系统时间的函数:CURRENT_TIMESTAMP,GETDATE,GETUTCDATE
返回日期时间的指定部分:DATENAME,DATEPART,DAY,MONTH,YEAR
计算日期时间差异的函数:DATEDIFF, DATEADD (必须注意的是datetime、smalldatetime数据类型支持+和-运算符,但是对于date、time、datetime2、datetimeoffset则不支持。)
对日期时间进行计算的函数:DATEADD
设置日期时间显示格式的函数:@@DATEFIRST,SET DATEFIRST,SET DATEFORMAT,@@LANGUAGE,SET LANGUAGE,sp_helplanguage
用于确认日期时间数据格式的函数:ISDATE
相关文章推荐
- SQL Server 2008对日期时间类型的改进
- 一秒看懂SQL Server 2008日期时间类型区别
- SQL server 2008 的日期时间类型
- SQL Server 2008新的日期时间数据类型
- 关于SQL Server的日期时间数据类型
- sql server日期时间类型转换
- SQL Server 日期和时间相关的数据类型有两种
- SQL Server数据类型,其中的日期有范围datetime:旧版本的日期时间类型,范围1753-01-01 to 9999-12-31,精确到3.33毫秒
- SQL Server 2008中的新日期数据类型
- SQL Server 2008中的日期数据类型
- SQL Server中日期时间类型字段只取年月日
- Sql Server 2008 日期和时间函数、数学函数、字符传函数小结
- SQL server系统的时间日期函数和日期时间的数据类型
- SQL Server中日期时间类型字段只取年月日
- SQL Server 2008中新的日期数据类型
- [转载]SQL Server 2008中的新日期数据类型
- SQL Server中日期/时间值到字符类型的数据转换
- SQL Server 2008中的新日期数据类型-Mssql数据库教程
- SQL Server 2008中的新日期数据类型
- SQL Server 2008中的新日期数据类型