我们如何忽略MySQL DATEDIFF()函数返回的负值?

How can we ignore the negative values return by MySQL DATEDIFF() function?

众所周知,DATEDIFF()函数用于获取两个日期之间的天数差。 因此,很有可能它也返回负值。

1
2
3
4
5
6
7
8
9
mysql> select * from differ;
+------------+-------------+
| OrderDate | WorkingDate |
+------------+-------------+
| 2017-10-22 | 2017-10-29 |
| 2017-10-25 | 2017-10-30 |
| 2017-10-25 | 2017-11-30 |
+------------+-------------+
3 rows in set (0.00 sec)

上面的查询将返回表" differ"中的值。 现在,如果有人想获得OrderDate和WorkingDate之间的差,则输出将为负,如下所示:

1
2
3
4
5
6
7
8
9
mysql> Select DATEDIFF(OrderDate, WorkingDate)AS 'DIFFERENCE IN DAYS' from differ;
+--------------------+
| DIFFERENCE IN DAYS |
+--------------------+
|         -7 |
|         -5 |
|        -36 |
+--------------------+
3 rows in set (0.00 sec)

但是我们可以使用MySQL ABS()函数忽略这些负值,可以按照以下步骤进行操作-

1
2
3
4
5
6
7
8
9
mysql> Select ABS(DATEDIFF(OrderDate, WorkingDate))AS 'DIFFERENCE IN DAYS' from differ;
+--------------------+
| DIFFERENCE IN DAYS |
+--------------------+
|         7 |
|         5 |
|         36 |
+--------------------+
3 rows in set (0.00 sec)