一个标量日期/时间函数,它返回指定日期部分的两个时间戳之间差异的整数计数。
{fn TIMESTAMPDIFF(interval-type,startdate,enddate)}
interval-type
- 返回值将表示的时间/日期间隔类型。startdate
- 时间戳值表达式。enddate
- 将与 startdate
进行比较的时间戳值表达式。TIMESTAMPDIFF
函数返回指定日期部分间隔(秒、天、周等)的两个给定时间戳之间的差异(即,从另一个中减去一个时间戳)。返回的值是一个 INTEGER
,即两个时间戳之间的这些间隔数。 (如果 enddate
早于 startdate
,则 TIMESTAMPDIFF
返回负 INTEGER
值。)
开始日期和结束日期是时间戳。这些时间戳可以是 %Library.TimeStamp
数据类型格式 (yyyy-mm-dd hh:mm:ss.ffff
) 或 %Library.PosixTime
数据类型格式(编码的 64
位有符号整数)。
间隔类型参数可以是以下时间戳间隔之一:
SQL_TSI_FRAC_SECOND
SQL_TSI_SECOND
SQL_TSI_MINUTE
SQL_TSI_HOUR
SQL_TSI_DAY
SQL_TSI_WEEK
SQL_TSI_MONTH
SQL_TSI_YEAR
这些时间戳间隔可以使用单引号或双引号来指定,带或不带引号。它们不区分大小写。
TIMESTAMPDIFF
和 DATEDIFF
不处理季度quarters
(3 个月间隔)。
请注意,TIMESTAMPDIFF
只能用作 ODBC 标量函数(使用大括号语法)。可以使用 DATEDIFF
通用函数对时间戳执行类似的时间/日期比较操作。
如果 startdate
或 enddate
参数采用 %Library.TimeStamp
数据类型格式 (yyyy-mm-dd hh:mm:ss.ffff
),则适用以下规则:
“1900–01–01”
.“00:00:00.000”
.SQL_TSI_FRAC_SECOND
以千分之一秒的整数计数形式返回小数秒的差异(精度为三位数)。 %PosixTime
值始终包含六位精度。TIMESTAMPDIFF
对输入值执行以下检查。
startdate
和 enddate
的所有指定部分必须有效,然后才能执行任何 TIMESTAMPDIFF
操作。SQLCODE -8
错误。“02–29”
仅在指定年份是闰年时有效。无效的日期值会导致 SQLCODE -8
错误。Day
值“07”
或“7”
有效,但“007”
、“7.0”
或“7a”
无效。startdate
或 enddate
指定了不完整的时间,则为未指定的部分提供零。SQLCODE -8
错误。以下示例返回 7
,因为第二个时间戳 (2017-12-20 12:00:00
) 比第一个大 7
个月:
SELECT {fn TIMESTAMPDIFF(SQL_TSI_MONTH,
'2017-5-19 00:00:00','2017-12-20 12:00:00')}
7
以下示例返回 566
,因为第二个时间戳 ('12:00:00'
)) 比第一个时间戳 (02:34:12
) 大 566
分钟:
SELECT {fn TIMESTAMPDIFF(SQL_TSI_MINUTE,'02:34:12','12:00:00')}
566
以下示例返回 -1440,因为第二个时间戳比第一个小一天(1440 分钟):
SELECT {fn TIMESTAMPDIFF(SQL_TSI_MINUTE,'2017-12-06','2017-12-05')}
-1440
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。