在信创适配中,从MySQL迁移过来的程序使用了timestampdiff函数计算两个日期或时间之间差值,它可以使用年、季、月、日、周、日、时、分、秒、微秒等单位。
LightDB 23.4版本对该函数进行了增强,支持了MySQL的用法。timestampdiff首个参数可以带引号'MONTH'
或不带引号MONTH
。
准备数据
create table date_table(
c1 text, c2 text,
c3 date, c4 date,
c5 datetime, c6 datetime,
c7 timestamp DEFAULT CURRENT_TIMESTAMP, c8 timestamp DEFAULT CURRENT_TIMESTAMP);
insert into date_table values (
'1999-11-11 11:23:45', '2021-12-12 12:12:12',
'1999-11-11 11:23:45', '2021-12-12 12:12:12',
'1999-11-11 11:23:45', '2021-12-12 12:12:12',
'1999-11-11 11:23:45', '2021-12-12 12:12:12'
);
insert into date_table values (
'1999-11-11 11:23:45', null,
null, '2021-12-12 12:12:12',
null, null,
'1999-11-11 11:23:45', '2021-12-12 12:12:12'
);
使用timestampdiff函数
select timestampdiff ('MICROSECOND', c5, c6) d1 , timestampdiff (MICROSECOND, c5, c6) d2 from date_table;
d1 | d2
-----------------+-----------------
696991707000000 | 696991707000000
|
(2 rows)
select timestampdiff ('SECOND', c5, c6) d1 , timestampdiff (SECOND, c5, c6) d2 from date_table;
d1 | d2
-----------+-----------
696991707 | 696991707
|
(2 rows)
select timestampdiff ('MINUTE', c5, c6) d1 , timestampdiff (MINUTE, c5, c6) d2 from date_table;
d1 | d2
----------+----------
11616528 | 11616528
|
(2 rows)
select timestampdiff ('HOUR', c5, c6) d1 , timestampdiff (HOUR, c5, c6) d2 from date_table;
d1 | d2
--------+--------
193608 | 193608
|
(2 rows)
select timestampdiff ('DAY', c5, c6) d1 , timestampdiff (DAY, c5, c6) d2 from date_table;
d1 | d2
------+------
8067 | 8067
|
(2 rows)
select timestampdiff ('WEEK', c5, c6) d1 , timestampdiff (WEEK, c5, c6) d2 from date_table;
d1 | d2
------+------
1152 | 1152
|
(2 rows)
select timestampdiff ('MONTH', c5, c6) d1 , timestampdiff (MONTH, c5, c6) d2 from date_table;
d1 | d2
-----+-----
265 | 265
|
(2 rows)
select timestampdiff ('QUARTER', c5, c6) d1 , timestampdiff (QUARTER, c5, c6) d2 from date_table;
d1 | d2
----+----
88 | 88
|
(2 rows)
select timestampdiff ('YEAR', c5, c6) d1 , timestampdiff (YEAR, c5, c6) d2 from date_table;
d1 | d2
----+----
22 | 22
|
(2 rows)
根据上述示例可以知道本次增强只是传参方式做了新的支持,函数本身行为并不发生改变。