加入收藏 | 设为首页 | 会员中心 | 我要投稿 大连站长网 (https://www.0411zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

SQL中如何运用datediff函数

发布时间:2022-03-04 13:36:57 所属栏目:MySql教程 来源:互联网
导读:这篇文章主要介绍SQL中如何使用datediff函数,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 在SQL Server中,可以使用T-SQL DATEDIFF()函数返回两个日期之间的差异。它适用于任何可以解析为time、date、smalldatetime、datetime
      这篇文章主要介绍SQL中如何使用datediff函数,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
 
      在SQL Server中,可以使用T-SQL DATEDIFF()函数返回两个日期之间的差异。它适用于任何可以解析为time、date、smalldatetime、datetime、datetime2或datetimeoffset值的表达式。因此,你也可以得到两次的差值。
 
      DATEDIFF()函数语法如下:
 
     DATEDIFF ( datepart , startdate , enddate )
     其中datepart是你想要比较的日期的一部分。startdate是第一个日期,enddate是结束日期。
 
     它的工作方式是从enddate中减去startdate。
 
示例1
 
下面是一个基本的例子,我们可以算出两个日期之间的天数:
 
SELECT DATEDIFF(day, '2001-01-01', '2002-01-01') AS Result;
结果:
 
+----------+
| Result   |
|----------|
| 365      |
+----------+
示例2
 
下面是另一个例子,我声明了两个变量并为它们分配了两个不同的日期(我使用DATEADD()将第一个日期添加1年)。然后使用DATEDIFF()返回该日期的各个dateparts:
 
DECLARE @date1 datetime2 = '2000-01-01 00:00:00.0000000';
DECLARE @date2 datetime2 = DATEADD(year, 1, @date1);
SELECT
    DATEDIFF( year, @date1, @date2 ) AS Years,
    DATEDIFF( quarter, @date1, @date2 ) AS Quarters,
    DATEDIFF( month, @date1, @date2 ) AS Months,
    DATEDIFF( week, @date1, @date2 ) AS Weeks,
    DATEDIFF( dayofyear, @date1, @date2 ) AS DayOfYear,
    DATEDIFF( day, @date1, @date2 ) AS Days;
结果:
 
+---------+------------+----------+---------+-------------+--------+
| Years   | Quarters   | Months   | Weeks   | DayOfYear   | Days   |
|---------+------------+----------+---------+-------------+--------|
| 1       | 4          | 12       | 53      | 366         | 366    |
+---------+------------+----------+---------+-------------+--------+
 下面是一个获取两个日期/时间值之间的毫秒、微秒和纳秒数的例子:
 
DECLARE @date1 datetime2 = '2000-01-01 00:00:00.0000000';
DECLARE @date2 datetime2 = DATEADD(millisecond, 1, @date1);
SELECT    
    DATEDIFF( millisecond, @date1, @date2 ) AS Milliseconds,
    DATEDIFF( microsecond, @date1, @date2 ) AS Microseconds,
    DATEDIFF( nanosecond, @date1, @date2 ) AS Nanoseconds;
结果:
 
+----------------+----------------+---------------+
| Milliseconds   | Microseconds   | Nanoseconds   |
|----------------+----------------+---------------|
| 1              | 1000           | 1000000       |
+----------------+----------------+---------------+
示例5 - Error错误!
 
如果你尝试做一些极端的事情,比如,返回100年后的纳秒数,你会得到一个错误。这是因为DATEDIFF()返回一个int值,100年内的纳秒数比int数据类型能够处理的纳秒数还要多。
SQL中如何运用datediff函数

(编辑:大连站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!