Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

เราจะเพิกเฉยต่อค่าลบที่ส่งคืนโดยฟังก์ชัน MySQL DATEDIFF () ได้อย่างไร


ดังที่เราทราบดีว่าฟังก์ชัน DATEDIFF() ถูกใช้เพื่อหาค่าความแตกต่างในจำนวนวันระหว่างวันที่สองวัน ดังนั้นจึงมีความเป็นไปได้ค่อนข้างมากที่จะคืนค่าติดลบเช่นกัน

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)

แบบสอบถามด้านบนจะคืนค่าจากตาราง 'แตกต่าง' ตอนนี้ ถ้ามีใครต้องการทราบความแตกต่างระหว่าง OrderDate และ WorkingDate ผลลัพธ์จะเป็นค่าลบดังนี้ -

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() เพื่อละเว้นค่าลบเหล่านี้และสามารถทำได้ดังนี้ −

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)