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