SQL Server中日期时间函数的用法详解

 更新时间:2022年05月21日 15:26:17   作者:springsnow  
本文详细讲解了SQL Server中日期时间函数的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

1、getdate():获取当前日期

返回当前SQLServer服务器所在计算机的日期和时间。返回值舍入到最近的秒小数部分,精度为.333秒数据库十七偏移量不包含在内。

select getdate() --输出 2013-03-09 15:16:00.570

2、getutcdate():获取UTC时间值

select GETUTCDATE() -- 2013-06-18 08:02:53.253

3、year():获取年度信息

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

select year(getdate()) --输出 2013

4、month():获取月份信息

month函数以int数据类型的格式返回特定日期的月份信息。

select month(getdate()) --输出 3

5、day():获取天数信息

day函数以int数据类型的格式返回特定日期的天数信息。

select day(getdate()) --输出 9

6、datepart():获取任意时间部分

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

datepart( datepart , date数据 )

datepart参数:特定的要返回的数据的格式代码。Datepart部分的取值如下表所示:

说明取值
返回年度信息Year、YYYY、YY
返回月份信息Month、MM、M
返回日期信息Day、DD、D
返回周信息Week、WK、WW
返回每周星期几信息WeekDay、DW
返回季度信息Quarter、QQ、Q
返回一年中第几天的信息DayOfYear、DY、Y
返回小时信息Hour、HH
返回分钟信息Minute、MI、N
返回秒信息Second、SS、S
返回毫秒信息MillSecond、MS
SELECT DATEPART(yyyy,OrderDate) AS OrderYear,DATEPART(mm,OrderDate) AS OrderMonth,DATEPART(dd,OrderDate) AS OrderDay
FROM Orders WHERE OrderId=1

7、datename():获取任意时间部分

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

SELECT DateName(Quarter,GetDate()) --输出 2(6月)

8、dateadd():日期加法

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

dateadd (datepart,numer,date数据)

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

select getdate()    --输出 2013-03-09 16:03:59.293
select dateadd(YYYY,10,getdate())    --加了十年    输出2023-03-09 16:04:36.893

8、datediff():日期差异

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

datediff(datepart,startdate,enddate)

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

select datediff(YYYY,'2011-11-11','2012-12-12')    --1
select datediff(day,'2011-11-11','2012-12-12')     --397
select * from test where datediff(day,Rq,getdate()) = 0 --返回当天的数据:

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

1、sysdatetime():获取系统时间

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

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

2、sysdatetimeoffset():获取当前日期和时间

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

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

3、sysutcdatetime():获取系统UTC时间

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

10、current_timestamp:当前数据库系统时间戳

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

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

11、switchoffset():更改时间偏移量

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

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

12、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 可分配给采用任意日期和时间类型的变量。

13、isdate():判断是否为日期数据

ISDATE函数可以验证某个输入值是否为有效的日期数据, 若表达式为有效日期则返回 1 ,否则返回 0 。

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

14、获取当天零点

select convert(datetime,convert(varchar(10),getdate(),120))
select dateadd(day,datediff(day,0,getdate()),0)

15、官方完整日期函数清单:

http://technet.microsoft.com/zh-cn/library/ms186724.aspx#ModifyDateandTimeValues

到此这篇关于SQL Server日期时间函数的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • SQL将一个表中的数据插入到另一个表中的方法

    SQL将一个表中的数据插入到另一个表中的方法

    这篇文章介绍了SQL将一个表中的数据插入到另一个表中的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-02-02
  • SQL SERVER先判断视图是否存在然后再创建视图的语句

    SQL SERVER先判断视图是否存在然后再创建视图的语句

    SQL SERVER中先判断视图是否存在,使用IF NOT EXISTS,然后再创建视图,使用create view,整个过程如下
    2014-08-08
  • SQL server配置ODBC数据源(本地和服务器)详细步骤

    SQL server配置ODBC数据源(本地和服务器)详细步骤

    ODBC是open database connect的缩写,意思是开放式数据库连接,下面这篇文章主要给大家介绍了关于SQL server配置ODBC数据源(本地和服务器)的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2024-07-07
  • mybatis-plus的sql语句打印问题小结

    mybatis-plus的sql语句打印问题小结

    这篇文章主要介绍了mybatis-plus的sql语句打印问题,今天将常用的方式拷贝过来之后,发现没有发生效果(开始的时候以为是使用配置中心nacos导致问题,最后经过仔细的检查发现是单词拼错了),所以在这里记录一下
    2022-04-04
  • SQL server中字符串逗号分隔函数分享

    SQL server中字符串逗号分隔函数分享

    继SQl -Function创建函数数据库输出的结果用逗号隔开,在开发中也有许多以参数的形式传入带逗号字条串参数,需要的朋友可以参考下
    2016-10-10
  • SQL 窗口函示例数详解

    SQL 窗口函示例数详解

    窗口函数(Window Function),也叫OLAP函数(Online Anallytical Processing,联机分析处理)或者分析函数(Analytic Function),可以对数据库数据进行实时分析处理,这篇文章主要介绍了SQL 窗口函数详解,需要的朋友可以参考下
    2024-06-06
  • Sql Server 2016新功能之Row-Level Security(值得关注)

    Sql Server 2016新功能之Row-Level Security(值得关注)

    Sql Server 2016 有一个新功能叫 Row-Level Security 。下面通过实例给大家介绍Sql Server 2016新功能之Row-Level Security,感兴趣的朋友一起看看吧
    2016-11-11
  • SQL Server子查询的深入理解

    SQL Server子查询的深入理解

    这篇文章主要给大家介绍了关于SQL Server子查询的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • SQL Server序列SEQUENCE用法介绍

    SQL Server序列SEQUENCE用法介绍

    这篇文章介绍了SQL Server中序列SEQUENCE的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • MS SQL Server STUFF实现统计记录行转为列显示

    MS SQL Server STUFF实现统计记录行转为列显示

    SQL语句行转列函数是一种用于将多个行数据转换为一列的函数,本文主要介绍了MS SQL Server STUFF实现统计记录行转为列显示,具有一定的参考价值,感兴趣的可以了解一下
    2024-04-04

最新评论