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

Làm thế nào chúng ta có thể tính toán Ngày trong MySQL bằng cách sử dụng các hàm?


Trong MySQL, chúng ta có thể sử dụng các hàm sau để tính Ngày -

  • Hàm CURDATE () - Về cơ bản, nó trả về ngày hiện tại của máy tính.
  • Hàm YEAR () - Nó trả về năm của ngày được chỉ định.
  • Hàm MONTH () - Nó trả về tháng của ngày được chỉ định.
  • Hàm DAY () - Nó trả về ngày của ngày được chỉ định.
  • Hàm RIGHT () - Nó trả về số ký tự như được chỉ định trong hàm từ ngày đã cho. Phần của biểu thức so sánh các kết quả trả về từ hàm RIGHT () cho kết quả là 1 hoặc 0.

Để hiểu nó, hãy xem xét dữ liệu, như sau, từ một bảng có tên là 'Collegedetail' -

mysql> Select * from Collegedetail;
+------+---------+------------+
| ID   | Country | Estb       |
+------+---------+------------+
| 111  | INDIA   | 2010-05-01 |
| 130  | INDIA   | 1995-10-25 |
| 139  | USA     | 1994-09-25 |
| 1539 | UK      | 2001-07-23 |
| 1545 | Russia  | 2010-07-30 |
+------+---------+------------+
5 rows in set (0.00 sec)

Trong truy vấn sau, chúng tôi đã tính toán NGÀY bằng cách sử dụng tất cả các hàm ngày khác nhau -

mysql> Select ID, Estb, CURDATE(), YEAR(Estb), MONTH(Estb), DAY(Estb), (RIGHT(CURDATE(),5) < RIGHT(estb,5))As 'Return' FROM Collegedetail;
+------+------------+------------+------------+-------------+-----------+--------+
| ID   | Estb       | CURDATE()  | YEAR(Estb) | MONTH(Estb) | DAY(Estb) | Return |
+------+------------+------------+------------+-------------+-----------+--------+
| 111  | 2010-05-01 | 2017-11-30 | 2010       | 5           | 1         | 0      |
| 130  | 1995-10-25 | 2017-11-30 | 1995       | 10          | 25        | 0      |
| 139  | 1994-09-25 | 2017-11-30 | 1994       | 9           | 25        | 0      |
| 1539 | 2001-07-23 | 2017-11-30 | 2001       | 7           | 23        | 0      |
| 1545 | 2010-07-30 | 2017-11-30 | 2010       | 7           | 30        | 0      |
+------+------------+------------+------------+-------------+-----------+--------+
5 rows in set (0.00 sec)

mysql> Select ID, estb, CURDATE(),((YEAR(CURDATE())-YEAR(estb))-(RIGHT(CURDATE(),5)<RIGHT(estb,5))) AS 'YEARS_OLD' from collegedetail;
+------+------------+------------+-----------+
| ID   | estb       | CURDATE()  | YEARS_OLD |
+------+------------+------------+-----------+
| 111  | 2010-05-01 | 2017-11-30 | 7         |
| 130  | 1995-10-25 | 2017-11-30 | 22        |
| 139  | 1994-09-25 | 2017-11-30 | 23        |
| 1539 | 2001-07-23 | 2017-11-30 | 16        |
| 1545 | 2010-07-30 | 2017-11-30 | 7         |
+------+------------+------------+-----------+
5 rows in set (0.00 sec)