在SQL Server中,可以使用T-SQL DATEDIFF()函数返回两个日期之间的差异。它适用于任何可以解析为time、date、smalldatetime、datetime、datetime2或datetimeoffset值的表达式。因此,你也可以得到两次的差值。

本文提供了SQL Server中的DATEDIFF()函数的使用示例。

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 |

+---------+------------+----------+---------+-------------+--------+

示例3

如前所述,你还可以返回日期之间的时间部分。下面是返回日期/时间值之间的小时、分钟和秒数的例子:DECLARE @date1 datetime2 = '2000-01-01 00:00:00.0000000';

DECLARE @date2 datetime2 = DATEADD(hour, 1, @date1);

SELECT

DATEDIFF( hour, @date1, @date2 ) AS Hours,

DATEDIFF( minute, @date1, @date2 ) AS Minutes,

DATEDIFF( second, @date1, @date2 ) AS Seconds;

结果:+---------+-----------+-----------+

| Hours | Minutes | Seconds |

|---------+-----------+-----------|

| 1 | 60 | 3600 |

+---------+-----------+-----------+

示例4

下面是一个获取两个日期/时间值之间的毫秒、微秒和纳秒数的例子: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数据类型能够处理的纳秒数还要多。

如果你试着这么做会发生什么呢?DECLARE @date1 datetime2 = '2000-01-01 00:00:00.0000000';

DECLARE @date2 datetime2 = DATEADD(year, 100, @date1);

SELECT

DATEDIFF( millisecond, @date1, @date2 ) AS Milliseconds,

DATEDIFF( microsecond, @date1, @date2 ) AS Microseconds,

DATEDIFF( nanosecond, @date1, @date2 ) AS Nanoseconds;

结果:The datediff function resulted in an overflow. The number of dateparts separating two date/time instances is too large. Try to use datediff with a less precise datepart.

当然如果你真的必须找出100年内有多少纳秒,那么可以使用DATEDIFF_BIG()函数。这个函数返回一个带符号的bigint数据类型,它允许你返回比DATEDIFF()更大的值。

相关推荐:《MySQL教程》

mysql datediff函数怎么用_SQL中datediff函数怎么用?(代码详解)相关推荐

  1. yii mysql 事务处理_Yii2中事务的使用实例代码详解

    前言 一般我们做业务逻辑,都不会仅仅关联一个数据表,所以,会面临事务问题. 数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全 ...

  2. python的常量和变量_python中的常量和变量代码详解

    局部和全局变量: # name='lhf' # def change_name(): # # global name # name='帅了一比' # print('change_name',name) ...

  3. vue build text html,Vue中v-text / v-HTML使用实例代码详解_放手_前端开发者

    废话少说,代码如下所述: /p> 显示123 /p> 补充:vuejs {{}},v-text 和 v-html的区别 {{message}} let app = new Vue({ el ...

  4. mysql datediff函数怎么用_SQL中datediff函数有哪些用途呢?

    摘要: 下文讲述SQL中datediff函数的用途,如下所示: datediff函数功能说明: datediff用于返回两个日期之间的差值,返回单位可以为(年.月.日.小时.分钟.秒.毫秒等等) 下文 ...

  5. python输出变量代码_Python中变量的输入输出实例代码详解

    1.变量的输入: input函数: input() input("请输入银行卡密码") password = input("请输入银行卡密码") 变量名 = i ...

  6. 【Scala】Scala中常见集合的使用---代码详解

    1.List集合的使用及创建 object ListDemo1 {def main(args: Array[String]): Unit = {//创建一个Listval list: List[Int ...

  7. Transformer | DETR目标检测中的位置编码position_encoding代码详解

    本文主要描述的是DETR论文中的position_encoding,详细DETR论文解析可参考 论文篇 | 2020-Facebook-DETR :利用Transformers端到端的目标检测=> ...

  8. php 变量代码,php中的可变变量(代码详解)

    php中的可变变量 有时候使用可变变量名是很方便的.就是说,一个变量的变量名可以动态的设置和使用.一个普通的变量通过声明来设置,例如:<?php $a = 'hello'; ?> 一个可变 ...

  9. css修改代码,网站模板修改中常用到的CSS代码详解

    在上一篇文章中,提到了一些修改网站模板中常用到的方法,工具.但其中也牵涉到不到关于CSS样式表的一些知识,对于这些知识,缺乏的还占大多数,今天我就将常用的一些CSS样式表语法整理一下,发出来给大家,希 ...

最新文章

  1. netty源码深度分析
  2. Ubuntu常用翻译工具——星际译王StarDict
  3. (二十九)、Java字符串中去除空格
  4. javascript数字验证(转)
  5. 解决ERROR 1396 (HY000): Operation ALTER USER failed for root@localhost
  6. 集合竞价如何买入_世界上最稳健的抓涨停方法“10分钟集合竞价”选股诀窍,买入直接稳赚10个点,赚到笑...
  7. iOS 评论中含有表情的处理方法
  8. map的基本操作总结C++
  9. 趣谈网络协议笔记 - 通信协议综述
  10. matlab7.0窗口教程,MATLAB7.0实用教程
  11. c语言输出100以内的素数存放数组中,c语言素数(c语言输出100以内素数)
  12. Windows 7 多国语言包(MUI)
  13. kde下gwenview启动慢,甚至几十秒才能启动
  14. 深入浅出Embedding
  15. pe克隆linux系统下载,【完美成功】合并ntdetect.com的PE用的SETUPLDR.BIN(增加ISO/SYSLINUX专用版)...
  16. 《Redis设计与实现》笔记
  17. 到底什么是响应式布局,响应式布局如何去写
  18. 狂甩4大必杀技,乐视曲面分体超4忒狠了!
  19. 微信小程序新闻详情页面效果实现
  20. 网赚项目 - 陌陌引流,变现的步骤和方法

热门文章

  1. [乐意黎原创] WebPack 打包时抛Uncaught Error: Cannot find module '.\dist\bundle.js'
  2. 定位技术之室内定位浅析--新导智能
  3. Java Jsp+Servlet+mysql实现的在线招聘系统(系统管理员/企业用户/学生 功能:招聘信息、投递简历、筛选简历、面试资料下载、就业信息、就业新闻、留言板等)
  4. linux7查看计划任务,CentOS7 计划任务
  5. 卡尔曼转矩观测_基于卡尔曼观测器的永磁同步电机自抗扰控制
  6. 51nod 2206 低买高卖codeforces867E Buy Low Sell High 贪心+优先队列
  7. 程序员「烂梗」大合集,看过3个以上的都是狠人 ......
  8. 电脑技巧:盘点10个非常实用且有趣的网站
  9. 低成本兼职创业,每个互联网人都需要知道的方法论
  10. BMP真彩色转256色