Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm thế nào chúng ta có thể bỏ qua các giá trị âm do hàm MySQL DATEDIFF () trả về?

Như chúng ta biết rằng hàm DATEDIFF () được sử dụng để lấy chênh lệch số ngày giữa hai ngày. Do đó, rất có thể nó cũng trả về giá trị âm.

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)

Truy vấn trên sẽ trả về các giá trị từ bảng 'differ'. Bây giờ, nếu ai đó muốn nhận sự khác biệt giữa Ngày thứ tự và Ngày làm việc thì kết quả đầu ra sẽ là số âm như sau -

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

Nhưng chúng ta có thể sử dụng hàm MySQL ABS () để bỏ qua các giá trị âm này và nó có thể được thực hiện như sau -

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)