专业游戏门户,分享手游网游单机游戏百科知识攻略!

嗨游网
嗨游网

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.eeeoo.cn/ruanjian/903321_2.html,嗨游网一个专业手游免费下载攻略知识分享平台,本站部分内容来自网络分享,不对内容负责,如有涉及到您的权益,请联系我们删除,谢谢!

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

软件教程
小编:小嗨整编
相关文章相关阅读
  • 办公软件快捷键大全表(办公软件函数公式大全)

    办公软件快捷键大全表(办公软件函数公式大全)

    办公软件快捷键大全表(办公软件函数公式大全)办公软件快捷键大全表1.Alt系列2.Ctrl+数字3.Ctrl+Shift4.Shift系列办公软件函数公式大全1、Ctrl+字母Ctrl+A全选Ctrl+P打印Ctrl+C复制Ctrl+V粘贴...

  • c语言的输入函数有哪些

    c语言的输入函数有哪些

    c语言的输入函数有:1、scanf()函数、从标准输入stdin读取格式化输入;2、getchar()函数,从标准输入stdin获取一个字符;3、gets()函数,从标准输入stdin读取一行;4、getch()函数,从stdin流中读取字...

  • 什么是构造函数?详解JavaScript中的构造函数

    什么是构造函数?详解JavaScript中的构造函数

    作为原型和原型链的基础,先了解清楚构造函数以及它的执行过程才能更好地帮助我们学习原型和原型链的知识。本篇文章带大家详细了解一下javascript中的构造函数,介绍一下怎么利用构造函数创建一个js对象,希望对大家有所帮助!一个普通的函数被用...

  • Excel函数学习之CHOOSE函数 vs IF函数

    Excel函数学习之CHOOSE函数 vs IF函数

    如果Excel函数圈也有江湖,那CHOOSE函数绝对算得上扫地僧。它不如IF函数那般威震江湖,但它的本领却更胜一筹。今天小花就带大家好好见识一下被大多数人冷遇的CHOOSE函数!   CHOOSE函数使用index_num返回数值参数列...

  • Matlab中length函数怎么用

    Matlab中length函数怎么用

    在matlab中,length函数用于返回向量、数组或字符串中的元素个数。以下是length函数的一些用法示例:1、返回向量中的元素个数:v = [1, 2, 3, 4, 5];  numElements = length(v); % 结果...

  • mysql列转行函数是什么

    mysql列转行函数是什么

    在mysql中,列转行函数是“group_concat()”函数;该函数用于将非空列值按照分组条件进行合并并最终返回,如果其中有空值则返回的结果是空,语法为“selectgroup_concat(name separator';')列...

  • excel求差值用什么函数

    excel求差值用什么函数

    在excel中求差值是没有专门的函数,excel求差值的方法是:首先打开excel工作表;然后在f7单元格内输入“=d7-e7”公式;最后按回车即可得到两个数之间的差值即可。本文操作环境:Windows7系统、DellG3电脑、Micro...

  • Excel Mid函数的使用方法

    Excel Mid函数的使用方法

    在Excel中,提取指定长度的字符有两个函数,分别为Mid函数和Midb函数,前者用于提取指定长度的字符个数,后者用于提取指定长度的字节个数。用Mid函数提取时,无论是汉字、字母还是数字都算一个字符;用Midb函数提取时,汉字算两个字节...

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

精彩推荐