当前位置:首页 > SQL数据库 > 正文内容

SQlServer的日期相减(间隔)datediff函数

Conbio2年前 (2022-07-16)SQL数据库3610

select datediff(year, 开始日期,结束日期); --两日期间隔年
select datediff(quarter, 开始日期,结束日期); --两日期间隔季
select datediff(month, 开始日期,结束日期); --两日期间隔月
select datediff(day, 开始日期,结束日期); --两日期间隔天
select datediff(week, 开始日期,结束日期); --两日期间隔周
select datediff(hour, 开始日期,结束日期); --两日期间隔小时
select datediff(minute, 开始日期,结束日期); --两日期间隔分
select datediff(second, 开始日期,结束日期); --两日期间隔秒


代码如下:

select datediff(day, '20120103',CONVERT(varchar(8), GETDATE(), 112))

计算2012年1月3号和现在时间的隔天数




DATEDIFF 返回跨两个指定日期的日期和时间边界数。
语法 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


描述

   返回 Variant (Long) 的值,表示两个指定日期间的时间间隔数目。

语法

  DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])

  DateDiff 函数语法中有下列命名参数:

 

  部分 描述

 

  interval 必要。字符串表达式,表示用来计算date1 和 date2 的时间差的时间间隔

  Date1□date2 必要;Variant (Date)。计算中要用到的两个日期。

 

Firstdayofweek 可选。指定一个星期的第一天的常数。如果未予指定,则以星期日为第一天。firstweekofyear 可选。指定一年的第一周的常数。如果未予指定,则以包含 1 月 1 日的星期为第一周。


参数设置

 interval 参数的设定值如下:

  设置 描述

  yyyy 年 

  q 季

  m 月

  y 一年的日数

  d 日

  w 一周的日数

  ww 周

  h 时

  n 分钟

  s 秒


  firstdayofweek 参数的设定值如下:

  常数 值 描述

  vbUseSystem 0 使用 NLS API 设置。

  vbSunday 1 星期日(缺省值)

  vbMonday 2 星期一

  vbTuesday 3 星期二

  vbWednesday 4 星期三

  vbThursday 5 星期四

  vbFriday 6 星期五

  vbSaturday 7 星期六

 

  常数 值 描述

  vbUseSystem 0 用 NLS API 设置。

  vbFirstJan1 1 从包含 1 月 1 日的星期开始(缺省值)。

  vbFirstFourDays 2 从第一个其大半个星期在新的一年的一周开始。

  vbFirstFullWeek 3 从第一个无跨年度的星期开始。


函数说明

DateDiff 函数可用来决定两个日期之间所指定的时间间隔数目。例如,可以使用 DateDiff 来计算两个日期之间相隔几日,或计算从今天起到年底还有多少个星期。

 

  为了计算 date1 与 date2 相差的日数,可以使用“一年的日数”(y) 或“日”(d)。当 interval 是“一周的日数”(w) 时,DateDiff 返回两日期间的周数。如果 date1 是星期一,DateDiff 计算到 date2 为止的星期一的个数。这个数包含 date2 但不包含 date1。不过,如果 interval 是“周”(ww),则 DateDiff 函数返回两日期间的“日历周”数。由计算 date1 与 date2 之间星期日的个数而得。如果 date2 刚好是星期日,则 date2 也会被加进 DateDiff 的计数结果中;但不论 date1 是否为星期日,都不将它算进去。

 

  如果 date1 比 date2 来得晚,则 DateDiff 函数的返回值为负数。

 

  firstdayofweek 参数会影响使用时间间隔符号 “W” 或 “WW” 计算的结果。

 

  如果 date1 或 date2 是日期文字,则指定的年份成为该日期的固定部分。但是,如果 date1 或 date2 用双引号 (" ") 括起来,且年份略而不提,则在每次计算表达式 date1 或 date2 时,当前年份都会插入到代码之中。这样就可以书写适用于不同年份的程序代码。

 

  在计算 12 月 31 日和来年的 1 月 1 日的年份差时,DateDiff 返回 1 表示相差一个年份,虽然实际上只相差一天而已。

示例

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

 

  USE pubsGOSELECT DATEDIFF(day, pubdate, getdate()) AS no_of_daysFROM titlesGO

 

  DATEDIFF函数在Access和MSSQL中的使用区别

 

  ACCESS中用法:DATEDIFF('day', pubdate, Now())

 

  MSSQL中用法:DATEDIFF(day, pubdate, getdate())

 

  Sybase中用法:DATEDIFF(dd, pubdate, getdate())


扫描二维码推送至手机访问。

版权声明:本文由ZKCOPS发布,如需转载请注明出处。

本文链接:http://0.iiil.top/?id=15

分享给朋友:

“SQlServer的日期相减(间隔)datediff函数” 的相关文章

004.SQL WHERE 子句,AND & OR 运算符

004.SQL WHERE 子句,AND & OR 运算符

SQL WHERE 子句WHERE 子句用于提取那些满足指定条件的记录。SQL WHERE 语法SELECT column_name,column_name  FROM table_name  WHERE column_name ope...

005.SQL INSERT INTO ,UPDATE,DELETE 语句

005.SQL INSERT INTO ,UPDATE,DELETE 语句

SQL INSERT INTO 语句,用于向表插入新的记录;有以下两种编写形式;第一种形式无需指定要插入数据的列名,只需要提供被插入的值即可;insert into table_namevalues (value1,value2,value3,...)第二种形式需要指定列名及被插入的值;insert...

sql 怎么取 字符串的前几位

sql 怎么取 字符串的前几位

sql中,使用LEFT函数即可取到字符串的前几位。LEFT(c, number_of_char)用于返回某个被请求的文本域的左侧部分,其中c代表被请求的文本域,number_of_cha代表需要取出的字符串位数。如“LEFT("zhidao.baidu.com", 6)”即可取得...

sqlserver 各种判断是否存在(表、视图、函数、存储过程等)

sqlserver 各种判断是否存在(表、视图、函数、存储过程等)

1、判断表是否存在select * from sysobjects where id = object_id(表名) and OBJECTPROPERTY(id, N'IsUserTable&...

sqlserver判断存储过程是否存在,存在则更新,否则插入

sqlserver判断存储过程是否存在,存在则更新,否则插入

create   PROCEDURE proName @name  NVARCHAR(50), @O_RETURN INT OUTPUT,     @Id INT OUTPUT ASBEGIN   SET NOCOUNT O...

常用流程图图形含义,助力绘制流程图

常用流程图图形含义,助力绘制流程图

日常生活或工作中,我们经常会绘制流程图,用于梳理事件的具体流程或表示程序的算法等。   然而在制作流程图时,会特别注意对流程图图形符号的使用。通过特定图形用于表示具体的含义,使流程图变得直观易懂,下面给大家分享一些常用流程图图形含义,帮助你简单绘制流程图。 一、流程图图形符号  流程图的图形符...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。