• sql server DateTime相关内置函数总结


    本文部分内容参考msdn帮助文档和博客园!汇总备忘

    1、获取当前日期

         getdate()函数以datetime数据类型的格式返回当前SQLServer服务器所在计算机的日期和时间。其语法格式为getdate()。返回值舍入到最近的秒小数部分,精度为.333秒数据库十七偏移量不包含在内。

         示例:

    SELECT GETDATE() --输出 2016-03-24 12:35:03.333

         getutcdate()函数返回表示当前的 UTC 时间得自当前的本地时间和运行 SQL Server 的计算机操作系统中的时区设置。此值表示当前的 UTC 时间(注:世界统一时间)。

     SELECT GETUTCDATE() --输出 2016-03-24 04:35:03.333
    

    2、获取年度信息YEAR,月份信息MONTH,天数信息day

        year函数以int数据类型的格式返回特定日期的年度信息。其语法格式为YEAR(date数据)。其中的date数据时一个可以解析为time、date、smalldatetime、datetime、datetime2或datetimeoffset值的表达式,列表达式、用户定义的变量或字符串文字。

       示例:getdate() ='2016-03-24 12:54:41.463'

     SELECT YEAR(GETDATE())  --输出 2016
    

     month函数以int数据类型的格式返回特定日期的月份信息。其语法格式为month(date数据)。其中的date数据时一个可以解析为time、date、smalldatetime、datetime、datetime2或datetimeoffset值的表达式,列表达式、用户定义的变量或字符串文字。

     SELECT MONTH(GETDATE()) --输出 3
    

     day函数以int数据类型的格式返回特定日期的天数信息。其语法格式为day(date数据)。其中的date数据时一个可以解析为time、date、smalldatetime、datetime、datetime2或datetimeoffset值的表达式,列表达式、用户定义的变量或字符串文字。

     SELECT DAY(GETDATE()) --输出 24
    

    3、获取任意时间部分DateName

      返回表示指定 date 的指定 datepart 的字符串。

      语法:

    datename(datepart,date)

      参数:datepart是返回的date的一部分。下表列出了所有有效的datepart参数。

      注:getdate() ='2016-03-24 12:54:41.463'

    datepart 缩写形式 返回值  参考 描述
    year yy,yyyy 2016 返回年
    quarter qq,q 1 返回第几个季度
    month mm,m 03 返回月
    dayofyear dy,y 84 一年中的第几天
    day dd,d 24 date中的天数部分
    week wk,ww 13 一年中的第几周
    weekday dw,w 星期四 返回星期几
    hour hh 12 date中的小时部分
    minute mi,n 54 date中的分钟部分
    second ss,s 41 date中的秒部分
    millisecond ms 463 date中的毫秒部分

    4、获取任意时间部分DatePart

         datepart函数以int数据类型的格式返回某个日期时间数据的指定部分。

       1、语法格式:

      datepart( datepart , date)

       datepart:特定的要返回的数据的格式代码。

         date数据:一个可以解析为time、date、smalldatetime、datetime、datetime2或者datetimeoffset值的表达式、列表表达式、用户定义的变量或字符串文字。

            2、Datepart取值

        Datepart部分的取值如下表所示:

    datepart 缩写形式 返回值  参考 描述
    year yy,yyyy 2016 返回年度信息
    quarter qq,q 1 返回第几个季度
    month mm,m 03 返回月份信息
    dayofyear dy,y 84 一年中的第几天
    day dd,d 24 date中的天数部分
    week wk,ww 13 一年中的第几周
    weekday dw,w 5 返回星期几
    hour hh 12 date中的小时部分
    minute mi,n 54 date中的分钟部分
    second ss,s 41 date中的秒部分
    millisecond ms 463 date中的毫秒部分

    5日期加法DATEADD

       dateadd函数将某个日期加上一个特定的时间间隔值后返回datetime数据类型的值。

        1、语法格式:

      dateadd (datepart,numer,date)

        numer:用于与detepart相加的值。如果指定了非整数值,则将舍弃该值的小数部分。

        date数据:一个用于解析为time、date、smalldatetime、datetime、datetime2、或datetimeoffset值的表达式、列表达式、用户定义的变量或字符串文字。

        datepart:时间部分。上节。

        示例:

      select getdate()    --输出 2016-03-24 16:03:59.293
      select dateadd(YYYY,10,getdate())    --加了十年    输出2026-03-24 16:04:36.893        

    6、日期减法DATEDIFF

        datediff函数将两个特定的日期数据相减,得到的结果可以按照detepart指定的格式返回特定的数据。

        1、语法格式:

      datediff(datepart,startdate,enddate)

        执行中将使用enddate减以startdate的值,如果startdate晚于enddate将返回负值。执行结果如果超出整数范围将提示错误。

        startdate:一个可以解析为time、date、smalldate、datetime、datetime2或datetimeoffset值的表达式、列表达式、用户定义的变量或字符串文字。

        enddate:一个可以解析为time、date、smalldate、datetime、datetime2或datetimeoffset值的表达式、列表达式、用户定义的变量或字符串文字。

        datepart:时间部分。

        示例:

      select datediff(YYYY,'2011-11-11','2012-12-12')    --输出1 年份相减之后的确是1
      select datediff(day,'2011-11-11','2012-12-12')     --输出 397 两个日期相差的天数

        2013-3-13日补充,用此方法查询当前的记录:

      select * from test where datediff(day,Rq,getdate()) = 0 --其中Rq为日期列,此行代码的意思是什么呢?getdate()减去Rq列的值为0,Rq列的值与今天相减,号数为0 

    7、SQLServer 2008中新增的日期时间型函数

        1、获取系统时间 SysDateTime

        sysdatetime函数以datetime2(7)数据类型的格式返回当前系统的日期和时间。其语法格式为sysdatetime()。返回值有七个小数位,但只精确到10毫秒。数据库偏移量未包含在内。

      SELECT SYSDATETIME()  --2013-06-17 22:17:59.0610211

        2、获取当前日期和时间 SysDateTimeOffset

        sysdatetimeoffset函数以datetimeoffset(7)数据类型的格式返回当前系统的日期和时间。其语法格式为sysdatetimeoffset()。返回值有七个小数位,但只精确到10毫秒。数据库时区偏移量包含在内。

      SELECT sysdatetimeoffset()  --2013-06-17 22:18:30.1788009 +08:00

        3、获取系统UTC时间 SysUTCDateTime

      select SysUTCDateTime() -- 2013-06-18 08:09:17.8229505

      8Current_TimeStamp当前数据库系统时间戳

      返回当前数据库系统时间戳,返回值的类型为 datetime,并且不含数据库时区偏移量。 此值得自运行 SQL Server 实例的计算机的操作系统。等价于GetDate();

      SELECT CURRENT_TIMESTAMP --2013-06-18 16:16:10.007

      9SWITCHOFFSET更改时间偏移量

        SwitchOffset更改 DateTimeOffset 值的时区偏移量并保留 UTC 值。

      SELECT SysDateTimeOffset()    -- 2013-06-18 16:40:34.4322865 +08:00
      SELECT SWITCHOFFSET (SysDateTimeOffset(), '+07:00') --2013-06-18 15:40:53.5403794 +07:00

      10、TodateTimeOffset  datetime2转datetimeoffset

      返回从 datetime2 表达式转换而来的一个 datetimeoffset 值。

      SELECT SysDateTimeOffset()    -- 2013-06-18 16:40:34.4322865 +08:00
      SELECT TodateTimeOffset(GetDate(),'+07:00') --2013-06-18 16:46:10.537 +07:00

      留意到以上代码是只更改时区,但是不更改时值。

      SysDateTime 和 SysUTCDate 在秒小数部分精度上要比 GetDate 和 GetUTCDate 高。 SysDateTimeOffset 包含系统时区偏移量。 SysDateTime、SysUTCDate 和 SysDateTimeOffset 可分配给采用任意日期和时间类型的变量。

      11、判断是否为日期数据isDate

        ISDATE函数可以验证某个输入值是否为有效的日期数据

        1、语法结构:

      ISDATE(expression)

        2、返回值

         若表达式为有效日期则返回 1 ,否则返回 0 。

        示例:

        select isdate('2012-12-12')    -- 输出1
        select isdate('xxxx-12-12')  -- 输出0

      12、eomonth 返回包含指定日期的月份的最后一天  

    适用范围:SQL Server(SQL Server 2012 至当前版本),Azure SQL Database。
    

        语法:

    eomonth ( start_date [, month_to_add ] )
    

        示例:

    DECLARE @date DATETIME = GETDATE();
    SELECT EOMONTH ( @date ) AS 'This Month';--当月
    SELECT EOMONTH ( @date, 1 ) AS 'Next Month';--下一月
    SELECT EOMONTH ( @date, -1 ) AS 'Last Month';--上一月
    GO
    

      

  • 相关阅读:
    centos7 查看启动ntp服务命令
    集群重启某一主机下所有osd down解决办法
    不卸载ceph重新获取一个干净的集群环境
    centos7 中文乱码解决方法
    ceph-deploy mon add 失败
    批量删除osd的shell脚本
    搭建自己的框架WedeNet(二)
    搭建自己的框架WedeNet(一)
    多线程总结
    C#中操作单个cookie和cookie字典
  • 原文地址:https://www.cnblogs.com/dudg/p/5315146.html
Copyright © 2020-2023  润新知