TIMESTAMPDIFF

说明

计算两个时间戳之间的间隔。

语法

timestampdiff ::=

参数

field

field表示时间差结果用哪个域的单位表示。单位的表示方法有两种,一种是用整数0到9表示,分别对应微秒到年不等。另外一种是用字符串表示单位名称,具体对应关系如下:

表41field单位名称对应的关系

field名称 对应的数字 对应的名称
微秒 0 millisecond、ms
1 second、ss、s
2 minute、mi、n
小时 3 hour、hh
4 day、dd、d
星期 5 week、wk、ww
6 month、mm、m
季度 7 quarter、qq
8 year、yy、yyyy

(兼容SQL Server)

9 dy、y

timestamp_expression1

TIMESTAMP类型的时间值

timestamp_expression2

TIMESTAMP类型的时间值

返回值

返回LONG类型,亦即INT8类型表示的差值。

注解

参数9(dy、y)实际上和参数4(day、dd、d)是一样的,增加9的原因是为了兼容SQL Server的dayofyear域,相关内容请查阅SQL Server帮助文档。

由于DB2数据库的field域与神通数据库的有所区别(DB2的field域也是用数字表示域名,但是所用数字与神通数据库有所不同),为了兼容DB2数据库,我们做了兼容处理,若需要兼容,需打开兼容开关SET COMPATABLE_DBMS = 3;

其中DB2的field域与神通数据库的对应关系如下

表42DB2的field域与神通数据库的对应关系

field名称 神通数据库 DB2
微秒 0 1
1 2
2 4
小时 3 8
4 16
星期 5 32
6 64
季度 7 128
8 256

DB2的field域不允许以字符串形式输入域的名称。

示例

示例1: 用 TIMESTAMPDIFF 计算小时差

--  用 TIMESTAMPDIFF 计算小时差
--  以下两条SQL语句实现相同功能
SELECT TIMESTAMPDIFF(3, '2003-8-19 8:39:29', '2008-12-31 12:39:39');
TIMESTAMPDIFF(bigint)      |
---------------------------
47068                      |
总数目:1


SELECT TIMESTAMPDIFF('hour', '2003-8-19 8:39:29', '2008-12-31 12:39:39');
TIMESTAMPDIFF(bigint)      |
---------------------------
47068                      |
总数目:1

示例2: 用 TIMESTAMPDIFF 计算小时差(兼容 DB2)

--  用 TIMESTAMPDIFF 计算小时差
SELECT TIMESTAMPDIFF(8, '2003-8-19 8:39:29', '2008-12-31 12:39:39');
TIMESTAMPDIFF(bigint)      |
---------------------------
47068                      |
总数目:1