• MS SQL Server 时间函数


    日期和时间数据类型
    数据类型

    存储(字节)

    日期范围 精确度 格式示例
    DateTime 8 1753年1月1日 - 9999年12月31日 3 1/3毫秒 yyyy-MM-dd hh:mm:ss.nnn
    smalldatetime 4 1900年1月1日 - 2079年6月6日 1分钟 yyyy-MM-dd hh:mm
    date 3 0001年1月1日 - 9999月12月31日 1天 yyyy-MM-dd
    time 3-5 N/A 100纳秒 hh:mm:ss.nnnnnnn
    DateTime2 6-8 0001年1月1日 - 9999年12月31日 100纳秒 yyyy-MM-dd hh:mm:ss.nnnnnnn
    Datetimeoffset 8-10 0001年1月1日 -- 9999年12月31日 100纳秒 yyyy-MM-dd hh:mm:ss.nnnnnnn

    -- 1、时间和日期函数 除了CURRENT_TIMESTAMP 函数不置顶小括号"()";其他的函数都需要制定小括号

    select GETDATE() --返回当前时间
    select CURRENT_TIMESTAMP -- 等同于getdate(),但是遵循ANSI SQL
    select GETUTCDATE() -- 返回UTC日期和时间(协调世界时 )
    select SYSDATETIME() -- 当前日期和时间
    select SYSUTCDATETIME() -- 当前UTC日期和时间(协调世界时)
    select SYSDATETIMEOFFSET() -- 包含时区偏移量的当前日期时间

    -- 2、cast、convert函数,及其Try_对应函数 TRY_函数在SQL Sever2012开始支持
    -- cast、convert函数用于将输入值转换为目标类型,如果转换成功输出转换的值,否则报错;
    -- try_cast、try_convert函数;两个个try_函数与其对应的函数功能作用一样,不同的是如果不能讲输入的值转换为指定类型,函数返回NULL.

    select CAST('20160628' AS DATE)
    select TRY_CAST('20160628' AS DATE)

    select CAST('123456' as DATE)
    select Try_CAST('123456' as DATE)


    select CONVERT(char(10),GETDATE(),120)
    select Try_CONVERT(char(10),GETDATE(),120)


    select CONVERT(int,'123acb')
    select Try_CONVERT(int,'123acb')

    -- 3、switchoffset函数将输入的datetimeoffset时间调整为指定的时区时间
    select switchoffset(sysdatetimeoffset(),'-05:00') --查询-05:00 时区时间
    select SWITCHOFFSET(SYSDATETIMEOFFSET(),'+00:00') --查询UTC时间

    -- 4、Todatetimeoffset函数;设置输入的日期和时间值得时区偏移量
    select TODATETIMEOFFSET(SYSDATETIMEOFFSET(),-10)

    -- 5、DateAdd函数;允许为指定的日期部分增加一个指定的单位的单位数量到输入的日期和时间值中。
    select DATEADD(YEAR,1,'2016-06-28') --指定日期加1年 2017-06-28
    select DATEADD(QUARTER,1,'2016-06-28') --指定日期加3个月206-09-28
    select DATEADD(MONTH,-1,'2016-06-28') --指定日期减1个月2016-05-28
    select DATEADD(DAY,1,'2016-06-28') --指定日期加1天2016-06-29
    select DATEADD(WEEK,1,'2016-06-28') --指定日期加7天2016-07-05
    select DATEADD(HOUR,1,'2016-06-28 21:00:00.000') -- 指定时间加1小时 2016-06-28 22:00:00.000
    select DATEADD(MINUTE,1,'2016-06-28 21:00:00.000') -- 指定时间加1分钟 2016-06-28 21:01:00.000
    select DATEADD(SECOND,1,'2016-06-28 21:00:00.000') -- 指定时间加1秒钟 2016-06-28 21:00:01.000
    select DATEADD(MILLISECOND,10,'2016-06-28 21:00:00.000') --指定时间加10毫秒 2016-06-28 21:00:00.010


    -- 6、DateDiff(part,val1,val2)函数;返回val2-val1返回指定单位的数量
    select DateDiff(YEAR,'2011-06-28','2017-06-28')
    select DateDiff(QUARTER,'2016-03-28','2016-06-28')
    select DateDiff(MONTH,'2016-05-28','2016-06-28')
    select DateDiff(DAY,'2016-06-27','2016-06-28')
    select DateDiff(WEEK,'2016-06-21','2016-06-28')
    select DateDiff(HOUR,'2016-06-28 20:00:00.000','2016-06-28 21:00:00.000')
    select DateDiff(MINUTE,'2016-06-28 21:01:00.000','2016-06-28 21:00:00.000')
    select DateDiff(SECOND,'2016-06-28 21:00:01.000','2016-06-28 21:00:00.000')
    select DateDiff(MILLISECOND,'2016-06-28 21:00:00.001','2016-06-28 21:00:00.000')

     

    -- 7、datepart函数;返回一个日期或时间部分的整数部分;
    select DATEPART(YEAR,'2016-06-28')
    select DATEPART(MONTH,'2016-06-28')
    select DATEPART(WEEK,'2016-06-28')
    select DATEPART(DAY,'2016-06-28')
    select DATEPART(HOUR,'2016-06-28 21:01:02')
    select DATEPART(MINUTE,'2016-06-28 21:01:02')
    select DATEPART(SECOND,'2016-06-28 21:01:02')
    select DATEPART(MILLISECOND,'2016-06-28 21:01:02:100')


    -- 8、year、month和day函数;和datepart函数一样;返回年、月、日期的整数
    select YEAR('2016-06-28')
    select month('2016-06-28')
    select day('2016-06-28')


    -- 9、datename函数;与datepart类似;但是返回的不是数字而是名称,根据操作系统的语言返回指定的日期名称;例如英文操作系统中 DATENAME(MONTH,'2016-06-28') 返回june
    select DATENAME(year,'2016-06-28')
    select DATENAME(MONTH,'2016-06-28')
    select DATENAME(DAY,'2016-06-28')
    select DATENAME(HOUR,'2016-06-28 21:01:02')
    select DATENAME(MINUTE,'2016-06-28 21:01:02')
    select DATENAME(SECOND,'2016-06-28 21:01:02')
    select DATENAME(MILLISECOND,'2016-06-28 21:01:02:100')


    -- 10、isdate函数;判断输入的字符串是否能转换为日期或时间;true 为1;false为0
    select ISDATE('2016-06-28') --true
    select ISDATE('2016-06-282') --false

    select ISDATE('2016-06-28 21:00:00.000') --true
    select ISDATE('2016-06-28 21:00:00.0000') --false

  • 相关阅读:
    如何使用dom拼接xml字符串(标准方式)
    javascript默认将数字类型的“002,00123”,作为整数,去掉前面的0
    java学习小记
    如何将div排成一行显示(默认垂直显示)
    【转】JDBC调用存储过程之实例讲解
    数组求和算法系列
    《12个球问题》分析
    C#类在什么时候分配内存
    C++请不要问我string s=”a”+”b”分配了几次内存
    算法两道百度笔试题
  • 原文地址:https://www.cnblogs.com/zhaochengshen/p/5625156.html
Copyright © 2020-2023  润新知