• SQL內置Function日期和时间函数


    日期和时间函数

    这些标量函数对日期和时间输入值执行操作,并返回一个字符串、数字值或日期和时间值。

    下表列出日期和时间函数以及它们的确定性属性。有关函数确定性的更多信息,请参见确定性函数和非确定性函数。

    函数

    确定性

    DATEADD

    具有确定性

    DATEDIFF

    具有确定性

    DATENAME

    不具有确定性

    DATEPART

    除了用作 DATEPART (dw, date) 外都具有确定性。dw 是工作日的日期部分,取决于由设置每周第一天的 SET DATEFIRST 所设置的值。

    DAY

    具有确定性

    GETDATE

    不具有确定性

    GETUTCDATE

    不具有确定性

    MONTH

    具有确定性

    YEAR

    具有确定性


    ===========

    1DATEADD

    在向指定日期加上一段时间的基础上,返回新的 datetime 值。

    语法

    DATEADD ( datepart , number, date )

    参数

    datepart

    是规定应向日期的哪一部分返回新值的参数。下表列出了 Microsoft® SQL Server™ 识别的日期部分和缩写。

    日期部分

    缩写

    Year

    yy, yyyy

    quarter

    qq, q

    Month

    mm, m

    dayofyear

    dy, y

    Day

    dd, d

    Week

    wk, ww

    Hour

    hh

    minute

    mi, n

    second

    ss, s

    millisecond

    ms

     

    number

    是用来增加 datepart 的值。如果指定一个不是整数的值,则将废弃此值的小数部分。例如,如果为 datepart 指定 day,为 number 指定 1.75,则 date 将增加 1。

    date

    是返回 datetime 或 smalldatetime 值或日期格式字符串的表达式。有关指定日期的更多信息,请参见 datetime 和 smalldatetime。

    如果您只指定年份的最后两位数字,则小于或等于"两位数年份截止期"配置选项的值的最后两位数字的数字所在世纪与截止年所在世纪相同。大于该选项的值的最后两位数字的数字所在世纪为截止年所在世纪的前一个世纪。例如,如果 two digit year cutoff 为 2049(默认),则 49 被解释为 2049,2050 被解释为 1950。为避免模糊,请使用四位数的年份。

    返回类型

    返回 datetime,但如果 date 参数是 smalldatetime,返回 smalldatetime。

    示例

    此示例打印出 pubs 数据库中标题的时间结构的列表。此时间结构表示当前发布日期加上 21 天。

    USE pubs
    GO
    SELECT DATEADD(day, 21, pubdate) AS timeframe
    FROM titles
    GO

    下面是结果集:

    timeframe                   
    --------------------------- 
    Jul 3 1991 12:00AM          
    Jun 30 1991 12:00AM         
    Jul 21 1991 12:00AM         
    Jul 13 1991 12:00AM         
    Jun 30 1991 12:00AM         
    Jul 9 1991 12:00AM          
    Mar 14 1997 5:09PM         
    Jul 21 1991 12:00AM         
    Jul 3 1994 12:00AM          
    Mar 14 1997 5:09PM         
    Nov 11 1991 12:00AM         
    Jul 6 1991 12:00AM          
    Oct 26 1991 12:00AM         
    Jul 3 1991 12:00AM          
    Jul 3 1991 12:00AM          
    Nov 11 1991 12:00AM         
    Jul 3 1991 12:00AM          
    Jul 3 1991 12:00AM          
     
    (18 row(s) affected)

     

    2DATEDIFF

    返回跨两个指定日期的日期和时间边界数。

    语法

    DATEDIFF ( datepart , startdate , enddate )

    参数

    datepart

    是规定了应在日期的哪一部分计算差额的参数。下表列出了 Microsoft® SQL Server™ 识别的日期部分和缩写。

    日期部分

    缩写

    year

    yy, yyyy

    quarter

    qq, q

    Month

    mm, m

    dayofyear

    dy, y

    Day

    dd, d

    Week

    wk, ww

    Hour

    hh

    minute

    mi, n

    second

    ss, s

    millisecond

    ms

     

    startdate

    是计算的开始日期。startdate 是返回 datetime 或 smalldatetime 值或日期格式字符串的表达式。

    因为 smalldatetime 只精确到分钟,所以当用 smalldatetime 值时,秒和毫秒总是 0。

    如果您只指定年份的最后两位数字,则小于或等于"两位数年份截止期"配置选项的值的最后两位数字的数字所在世纪与截止年所在世纪相同。大于该选项的值的最后两位数字的数字所在世纪为截止年所在世纪的前一个世纪。例如,如果 two digit year cutoff 为 2049(默认),则 49 被解释为 2049,2050 被解释为 1950。为避免模糊,请使用四位数的年份。

    有关时间值指定的更多信息,请参见时间格式。有关日期指定的更多信息,请参见 datetime 和 smalldatetime。

    enddate

    是计算的终止日期。enddate 是返回 datetime 或 smalldatetime 值或日期格式字符串的表达式。

    返回类型

    integer

    注释

    startdate 是从 enddate 减去。如果 startdate 比 enddate 晚,返回负值。

    当结果超出整数值范围,DATEDIFF 产生错误。对于毫秒,最大数是 24 天 20 小时 31 分钟零 23.647 秒。对于秒,最大数是 68 年。

    计算跨分钟、秒和毫秒这些边界的方法,使得 DATEDIFF 给出的结果在全部数据类型中是一致的。结果是带正负号的整数值,其等于跨第一个和第二个日期间的 datepart 边界数。例如,在 1 月 4 日(星期日)和 1 月 11 日(星期日)之间的星期数是 1。

    示例

    此示例确定在 pubs 数据库中标题发布日期和当前日期间的天数。

    USE pubs
    GO
    SELECT DATEDIFF(day, pubdate, getdate()) AS no_of_days
    FROM titles
    GO

    3DATENAME

    返回代表指定日期的指定日期部分的字符串。

    语法

    DATENAME ( datepart , date )

    参数

    datepart

    是指定应返回的日期部分的参数。下表列出了 Microsoft® SQL Server™ 识别的日期部分和缩写。

    日期部分

    缩写

    year

    yy, yyyy

    quarter

    qq, q

    month

    mm, m

    dayofyear

    dy, y

    day

    dd, d

    week

    wk, ww

    weekday

    dw

    Hour

    hh

    minute

    mi, n

    second

    ss, s

    millisecond

    ms

     

    weekday (dw) 日期部分返回星期几(星期天、星期一等)。

    是返回 datetime 或 smalldatetime 值或日期格式字符串的表达式。对 1753 年 1 月 1 日之后的日期用datetime 数据类型。更早的日期存储为字符数据。当输入 datetime 值时,始终将其放入引号中。因为 smalldatetime 只精确到分钟,所以当用 smalldatetime 值时,秒和毫秒总是 0。有关指定日期的更多信息,请参见 datetime 和 smalldatetime。有关时间值指定的更多信息,请参见时间格式。

    如果只指定年份的最后两位数字,则小于或等于 two digit year cutoff 配置选项的值的最后两位数字的值所在世纪与截止年所在世纪相同。大于该选项的值的最后两位数字的数字所在世纪为截止年所在世纪的前一个世纪。例如,如果 two digit year cutoff 为 2050(默认),则 49 被解释为 2049,50 被解释为 1950。为避免模糊,请使用四位数字的年份。

    返回类型

    nvarchar

    注释

    SQL Server 自动在字符和 datetime 值间按需要进行转换,例如,当将字符值与 datetime 值进行比较时。

    示例

    此示例从 GETDATE 返回的日期中提取月份名。

    SELECT DATENAME(month, getdate()) AS 'Month Name'

    下面是结果集:

    Month Name                     
    ------------------------------ 
    February 

    4DATEPART

    返回代表指定日期的指定日期部分的整数。

    语法

    DATEPART ( datepart , date )

    参数

    datepart

    是指定应返回的日期部分的参数。下表列出了 Microsoft® SQL Server™ 识别的日期部分和缩写。

    日期部分

    缩写

    year

    yy, yyyy

    quarter

    qq, q

    month

    mm, m

    dayofyear

    dy, y

    day

    dd, d

    week

    wk, ww

    weekday

    dw

    Hour

    hh

    minute

    mi, n

    second

    ss, s

    millisecond

    ms

     

    week (wk, ww) 日期部分反映对 SET DATEFIRST 作的更改。任何一年的 1 月 1 日定义了 week 日期部分的开始数字,例如:DATEPART(wk, 'Jan 1, xxxx') = 1,此处 xxxx 代表任一年。

    weekday (dw) 日期部分返回对应于星期中的某天的数,例如:Sunday = 1、Saturday = 7。weekday 日期部分产生的数取决于 SET DATEFIRST 设定的值,此命令设定星期中的第一天。

    date

    是返回 datetime 或 smalldatetime 值或日期格式字符串的表达式。对 1753 年 1 月 1 日之后的日期用datetime 数据类型。更早的日期存储为字符数据。当输入 datetime 值时,始终将其放入引号中。因为 smalldatetime 只精确到分钟,所以当用 smalldatetime 值时,秒和毫秒总是 0。

    如果只指定年份的最后两位数字,则小于或等于"两位数年份截止期"配置选项的值的最后两位数字的数字所在世纪与截止年所在世纪相同。大于该选项的值的最后两位数字的数字所在世纪为截止年所在世纪的前一个世纪。例如,如果 two digit year cutoff 为 2049 (默认),则 49 被解释为 2049,2050 被解释为 1950。为避免模糊,请使用四位数的年份。

    有关时间值指定的更多信息,请参见时间格式。有关日期指定的更多信息,请参见 datetime 和 smalldatetime。

    返回类型

    int

    注释

    DAY、MONTH、和 YEAR 函数分别是 DATEPART(dd, date)、DATEPART(mm, date)、和 DATEPART(yy, date) 的同义词。

    示例

    GETDATE 函数返回当前日期;然而,比较时并不总是需要完整的日期信息(通常只是对日期的一部分进行比较)。此示例显示 GETDATE 及 DATEPART 的输出。

    SELECT GETDATE() AS 'Current Date'
    GO

    下面是结果集:

    Current Date                
    --------------------------- 
    Feb 18 1998 11:46PM         
     
    SELECT DATEPART(month, GETDATE()) AS 'Month Number'
    GO

    下面是结果集:

    Month Number 
    ------------ 
    2            

    此示例假设日期是 5 月 29 日。

    SELECT DATEPART(month, GETDATE())
    GO

    下面是结果集:

    ----------- 
    5           
     
    (1 row(s) affected)

    在此示例中,以数字表示日期。注意:SQL Server 将 0 解释为 01/01/1900

    SELECT DATEPART(m, 0), DATEPART(d, 0), DATEPART(yy, 0)

    下面是结果集:

    ----- ------ ------
    1     1      1900

    5DAY

    返回代表指定日期的天的日期部分的整数。

    语法

    DAY ( date )

    参数

    date

    类型为 datetime 或 smalldatetime 的表达式。

    返回类型

    int

    注释

    此函数等价于 DATEPART(dd, date)。

    示例

    此示例返回从日期 03/12/1998 后的天数。

    SELECT DAY('03/12/1998') AS 'Day Number'
    GO

    下面是结果集:

    Day Number 
    ------------ 
    12            

    在此示例中,以数字表示日期。注意:Microsoft® SQL Server™ 将 0 解释为 01/01/1900

    SELECT MONTH(0), DAY(0), YEAR(0)

    下面是结果集。

    ----- ------ ------
    1     1      1900

    6GETDATE

    按 datetime 值的 Microsoft® SQL Server™ 标准内部格式返回当前系统日期和时间。

    语法

    GETDATE ( )

    返回类型

    datetime

    注释

    日期函数可用在 SELECT 语句的选择列表或用在查询的 WHERE 子句中。

    在设计报表时,GETDATE 函数可用于在每次生成报表时打印当前日期和时间。GETDATE 对于跟踪活动也很有用,诸如记录事务在某一帐户上发生的时间。

    示例
    A. 用 GET DATE 返回当前日期和时间

    下面的示例得出当前系统日期和时间:

    SELECT GETDATE()
    GO

    下面是结果集:

    -------------------------
    July 29 1998   2:50    PM
     
    (1 row(s) affected)
    B. 在 CREATE TABLE 语句中使用 GETDATE

    下面的示例创建 employees 表并用 GETDATE 给出员工雇佣时间的默认值。

    USE pubs
    GO
    CREATE TABLE employees
    (
     emp_id char(11) NOT NULL,
     emp_lname varchar(40) NOT NULL,
     emp_fname varchar(20) NOT NULL,
     emp_hire_date datetime DEFAULT GETDATE(),
     emp_mgr varchar(30)
    )
    GO

    7GETUTCDATE

    返回表示当前 UTC 时间(世界时间坐标或格林尼治标准时间)的 datetime 值。当前的 UTC 时间得自当前的本地时间和运行 SQL Server 的计算机操作系统中的时区设置。

    语法

    GETUTCDATE()

    返回类型

    datetime

    注释

    GETUTCDATE 是非确定性函数。引用该列的视图和表达式无法进行索引。

    GETUTCDATE 无法在用户定义的函数内调用。

    8MONTH

    返回代表指定日期月份的整数。

    语法

    MONTH ( date )

    参数

    date

    返回 datetime 或 smalldatetime 值或日期格式字符串的表达式。仅对 1753 年 1 月 1 日后的日期使用 datetime 数据类型。

    返回类型

    int

    注释

    MONTH 等价于 DATEPART(mm, date)。

    将 datetime 值包含在引号中。对于早期日期,可将其存储为字符数据。

    Microsoft® SQL Server™ 认可各种日期样式。有关日期和时间数据的更多信息,请参见 CAST 和 CONVERT。

    示例

    下面的示例从日期 03/12/1998 中返回月份数。

    SELECT "Month Number" = MONTH('03/12/1998')
    GO

    下面是结果集:

    Month Number 
    ------------ 
    3            

    下例用数字指定日期。注意:SQL Server 将 0 解释为 01/01/1900

    SELECT MONTH(0), DAY(0), YEAR(0)

    下面是结果集。

    ----- ------ ------
    1     1      1900

    8YEAR

    返回表示指定日期中的年份的整数。

    语法

    YEAR ( date )

    参数

    date

    datetime 或 smalldatetime 类型的表达式。

    返回类型

    int

    注释

    此函数等价于 DATEPART(yy, date)。

    示例

    下例从日期 03/12/1998 中返回年份数。

    SELECT "Year Number" = YEAR('03/12/1998')
    GO

    下面是结果集:

    Year Number 
    ------------ 
    1998            

    下例用数字指定日期。注意:Microsoft® SQL Server™ 数据库将 0 解释为 1900 年 1 月 1 日。

    SELECT MONTH(0), DAY(0), YEAR(0)

    下面是结果集:

    ----- ------ ------

    1     1      1900

     

    申明

    非源创博文中的内容均收集自网上,若有侵权之处,请及时联络,我会在第一时间内删除.再次说声抱歉!!!

    博文欢迎转载,但请给出原文连接。

  • 相关阅读:
    【业务自动化】iTop,全面支持ITIL流程的一款ITSM工具
    【Hadoop】HDFS源码解读
    【Hadoop】Hadoop RPC框架线程模型
    电商网站项目(一)用户模块---门户
    jdk1.5后枚举类的定义规则
    回顾static与final的作用
    @Springboot搭建项目controller层接收json格式的对象失败
    把一个文件中所有文件名或者文件路径读取到一个txt文件,然后在matlab中读取
    springboot用mybatis-generator自动生成mapper和model
    hibernate、mybatis、spring data 的对比
  • 原文地址:https://www.cnblogs.com/Athrun/p/556580.html
Copyright © 2020-2023  润新知