GBase 8a的DateDiff和TimestampDiff的参数顺序不同

两个函数都是用来取2个日期之间的差距,其中timestampdiff可以取各个位置,比如年,月,日等,而datediff只能取日。最大的区别,datadiff是日期1-日期2, 而timestampdiff是日期2-日期1。先后顺序是反的。

DateDiff

日期1-日期2。如果第一个日期晚于(大于)第二个日期,则返回正数。

gbase> select datediff(now(),'2004-05-01');
+------------------------------+
| datediff(now(),'2004-05-01') |
+------------------------------+
|                         6977 |
+------------------------------+
1 row in set (Elapsed: 00:00:00.01)

TimestampDiff

日期2-日期1。如果第一个日期晚于(大于)第二个日期,返回负数。


gbase> select timestampdiff(day,now(),'2004-05-01');
+---------------------------------------+
| timestampdiff(day,now(),'2004-05-01') |
+---------------------------------------+
|                                 -6977 |
+---------------------------------------+

PERIOD_DIFF

日期1-日期2

gbase> select PERIOD_DIFF(20230608,20230607);
+--------------------------------+
| PERIOD_DIFF(20230608,20230607) |
+--------------------------------+
|                              1 |
+--------------------------------+
1 row in set (Elapsed: 00:00:00.00)