专业汉语词典知识平台,分享汉字词语知识、历史文学知识解答!

励北网
励北网

datediff函数的用法(datediff函数怎么用)

来源:小易整编  作者:小易  发布时间:2023-02-23 06:01
摘要:datediff函数的用法(datediff函数怎么用)日期/时间函数,返回两个日期之间指定日期部分的整数差。大纲DATEDIFF(datepart,startdate,enddate)参数datepart -日期或时间部分的名称(或缩写)...

Sybase/SQL-Server-time表示以下三种格式之一:

HH:MM[:SS[:FFF]][{AM|PM}] HH:MM[:SS[.FFF]] HH['']{AM|PM}

Years

如果年份以两位数字表示,或者日期被完全省略, IRIS会检查滑动窗口来解释日期。系统范围内滑动窗口的默认值是1900; 因此,在默认情况下,两位数的年份被认为是在20世纪。如下示例所示:

SELECT DATEDIFF('year','10/11/14','02/22/2018'),       DATEDIFF('year','12:00:00','2018-02-22 12:00:00')

datediff函数的用法(datediff函数怎么用)

分数秒

DATEDIFF返回以毫秒(3位整数)、微秒(6位整数)或纳秒(9位整数)表示的小数秒,而不管startdate和enddate中的小数位数精度是多少。如下示例所示:

SELECT DATEDIFF('ms','12:00:00.1','12:00:00.2'),       DATEDIFF('ms','12:00:00.10009','12:00:00.20007')

datediff函数的用法(datediff函数怎么用)

一些NLS区域设置将分数分隔符指定为逗号(欧洲的用法),而不是句号。如果当前区域设置是这些区域设置之一,DATEDIFF接受句号或逗号作为本地日期格式的秒分隔符。对于$HOROLOG格式的日期或ODBC格式的日期,不能使用逗号作为小数秒分隔符。尝试这样做会生成一个SQLCODE -8。无论当前的NLS语言环境是什么,这两种格式都需要一段时间。

时间差异与时间格式无关

DATEDIFF返回以秒和毫秒为单位的时间差,即使当前进程的TimeFormat被设置为不返回秒。如下示例所示:

ClassMethod DateDiff() { s tfmt = ##class(%SYS.NLS.Format).GetFormatItem("TimeFormat") d ##class(%SYS.NLS.Format).SetFormatItem("TimeFormat",1) w "datetime values (with seconds) are: ",!, $ZDATETIME("64701,56670.10",1,-1),"  ",$ZDATETIME("64701,56673.27",1,-1),! &sql(SELECT DATEDIFF('ss','64701,56670.10','62871,56673.27') INTO :x) w "DATEDIFF number of seconds is: ",x,!! d ##class(%SYS.NLS.Format).SetFormatItem("TimeFormat",2) w "datetime values (without seconds) are: ",!, $ZDATETIME("64701,56670.10",1,-1),"  ",$ZDATETIME("64701,56673.27",1,-1),! &sql(SELECT DATEDIFF('ss','64701,56670.10','64701,56673.27') INTO :x) w "DATEDIFF number of seconds is: ",x,! d ##class(%SYS.NLS.Format).SetFormatItem("TimeFormat",tfmt) }

DHC-APP>d ##class(PHA.TEST.SQLCommand).DateDiff() datetime values (with seconds) are: 02/22/2018 15:44:30  02/22/2018 15:44:33 DATEDIFF number of seconds is: -158111996.83 datetime values (without seconds) are: 02/22/2018 15:44  02/22/2018 15:44 DATEDIFF number of seconds is: 3.17

范围和值检查

DATEDIFF对输入值执行以下检查:

  • 在执行任何DATEDIFF操作之前,开始日期和结束日期的所有指定部分必须是有效的。

  • 日期字符串必须完整,格式正确,包含适当数量的元素和每个元素的数字,以及适当的分隔符。年必须指定为四位数字。如果省略输入值的日期部分,DATEDIFF默认为' 1900-01-01 '。无效的日期值将导致SQLCODE -8错误。

  • 日期和时间值必须在有效范围内。年龄:0001到9999。月份:1 - 12个月。天数:1 - 31天。营业时间:00至23。分钟:0到59分钟。秒:0 ~ 59。一个月中的天数必须与月和年相匹配。例如,日期“02-29”仅在指定的年份为闰年时有效。无效的日期值将导致SQLCODE -8错误。

  • 小于10(月和日)的日期值可以包括或省略前导零。不允许使用其他非规范整数值。因此,Day值为“07”或“7”是有效的,但“007”、“7.0”或“7a”无效。

  • 时间值可以全部或部分省略。如果startdate或enddate指定了一个不完整的时间,则为未指定的部分提供0。

  • 小于10的小时值必须包含前导零。省略前导零将导致SQLCODE -8错误。

错误处理

  • 在Embedded SQL中,如果指定无效的datepart作为输入变量,则会发出SQLCODE -8错误码。如果将无效的日期部分指定为文字,则会发生<SYNTAX>错误。如果将无效的开始日期或结束日期指定为输入变量或文字,则会发出SQLCODE -8错误码。

  • 在动态SQL中,如果您提供了无效的日期部分、开始日期或结束日期,则DATEDIFF函数将返回一个NULL值。没有发出SQLCODE错误。

示例

下面的例子返回353,因为两个时间戳之间有353天(D):

SELECT DATEDIFF(D,'2018-01-01 00:00:00','2018-12-20 12:00:00') 353

在下面的示例中,每个DATEDIFF返回1,因为日期的年份部分相差1。日期之间的实际持续时间不被考虑:

SELECT DATEDIFF('yyyy','1910-08-21','1911-08-21') AS ExactYear,       DATEDIFF('yyyy','1910-06-30','1911-01-01') AS HalfYear,       DATEDIFF('yyyy','1910-01-01','1911-12-31') AS Nearly2Years,       DATEDIFF('yyyy','1910-12-31 11:59:59','1911-01-01 00:00:00') AS NewYearSecond             1 1 1 1

注意,上面的例子使用了日期部分的缩写。但是,你可以指定全名,如下例所示:

SELECT DATEDIFF('year','2017-09-10 13:19:00','2018-12-20 00:00:00') 1

下面的嵌入式SQL示例使用主机变量执行与前面示例相同的DATEDIFF操作:

ClassMethod DateDiff1() { s x="year" s date1="2017-09-10 13:19:00" s date2="2018-12-20 00:00:00" &sql(SELECT DATEDIFF(:x,:date1,:date2) INTO :diff) w diff }

1

下面的例子使用WHERE子句中的DATEDIFF来选择上周入院的患者:

SELECT Name,DateOfAdmission FROM Sample.Patients WHERE DATEDIFF(D,DateOfAdmission,$HOROLOG) <= 7

下面的例子使用了一个子查询来返回那些个人的出生日期距当前日期不超过1500天的记录:

SELECT Name,Age,DOB FROM (SELECT Name,Age,DOB, DATEDIFF('dy',DOB,$HOROLOG) AS DaysTo FROM Sample.Person) WHERE DaysTo <= 1500 ORDER BY Age

datediff函数的用法(datediff函数怎么用)


本文地址:百科问答频道 https://www.neebe.cn/wenda/903321_2.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!

共2页 1 2 当前是最后一页

百科问答
小编:小易整编
相关文章相关阅读
  • Excel中countif函数的使用方法

    Excel中countif函数的使用方法

    Excel中有很多函数,很多都可以为我们大大减少计算的时间,一步就得出结果,很多朋友在使用countif函数时,会出现一些错误导致不成功,我们这就来给你详细讲讲countif函数是应该如何使用的。countif函数的含义...

  • SUBTOTAL函数怎么用?

    SUBTOTAL函数怎么用?

    操作方法01隐藏行汇总方法:在目标单元格输入公式:=SUBTOTAL(109,C3:C9)。02筛选汇总。方法:在目标单元格输入公式:=SUBTOTAL...

  • 函数库是什么意思?

    函数库是什么意思?

    函数库是指由一组编写好的、结构化的可执行函数组成的库文件,其中的函数可以增加程序的通用功能以提升程序的运行效率,节省开发时间并提高软件的质量。函数库更常用于缩短编程时间、提供程序实现通用功能以及用于程序编写中特定功能的实现。函数库有帮助程...

  • 用数学画图软件——Graph绘制函数图形

    用数学画图软件——Graph绘制函数图形

    Graph是一款开源类的绘制函数图像软件。它不仅能根据函数绘制其图像,还能够绘制曲线上的切线、法线和阴影等。除了绘制功能,它还具有计算功能,其中包括曲线长度、面积等的计算。下面我来给大家介绍一下如何使用Graph绘制函数图像。操作方法...

  • Excel SLOPE函数的使用方法

    Excel SLOPE函数的使用方法

    在数学中SLOPE是斜率的意思,Excel中的SLOPE函数也是一个计算斜率的函数。请诸位和我一起学习——SLOPE函数。操作方法01SLOPE函数的功能把已知的自变量和因变量作为数据点,计算线性回...

  • Excel之MODE函数使用方法

    Excel之MODE函数使用方法

    MODE返回的数组或数据区域中出现频率最高或重复出现次数最多的值。此函数已被替换MODE.MULT函数和MODE.SNGL函数。操作方法01打开Excel,将测试使用的数据复制到表格中,如下图。...

  • 数学画图软件函数哪个好用 函数生成图像软件推荐

    数学画图软件函数哪个好用 函数生成图像软件推荐

    对于科技发达的互联网时代,很多学生是可以借用软件的方式来帮助自己快速的完成作业,接下来就简单的给大家分享下数学画图软件函数哪个好用,这次的合集里边会有几款非常经典的佳作分享给大家,通过时间的证明足以看到它们的优越性,感兴趣的话可以跟小编自己...

  • 反函数公式掌握,提高数学水平(应对复杂计算)

    反函数公式掌握,提高数学水平(应对复杂计算)

    反函数公式掌握,提高数学水平(应对复杂计算)反函数公式是高中数学中比较重要的概念之一,掌握反函数公式不仅可以提高数学水平,还可以帮助我们应对各种复杂计算。反函数公式是指将函数f(x)的自变量x和因变量y对调,得到一个新的函数g(y),称为f...

  • 周排行
  • 月排行
  • 年排行

精彩推荐