zoukankan      html  css  js  c++  java
  • SQL Server 2008对日期时间类型的改进

    微软在备受多年的争议后,终于对日期时间数据类型开刀了,在新版的SQL Server 2008中一口气增加了4种新的日期时间数据类型,包括:

    • 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字节

      为了使用这些数据类型,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
  • 相关阅读:
    系统维护相关问题
    Python环境维护
    哈希表解决字符串问题
    论文笔记二:《A Tutoral on Spectral Clustering》
    论文笔记之哈希学习比较--《Supervised Hashing with Kernels》《Towards Optimal Binary Code Learning via Ordinal Embedding》《Top Rank Supervised Binary Coding for Visual Search》
    Java中String、StringBuffer、StringBuilder的比较与源 代码分析
    浙大pat1040 Longest Symmetric String(25 分)
    浙大pat1039 Course List for Student(25 分)
    浙大pat---1036 Boys vs Girls (25)
    百炼oj-4151:电影节
  • 原文地址:https://www.cnblogs.com/feinian/p/3990540.html
Copyright © 2011-2022 走看看