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

ดึงปีจากวันที่ใน MySQL ด้วยฟังก์ชัน YEAR()

MySQL มีฟังก์ชัน YEAR() สำหรับดึงส่วนของปีออกมาจากค่าวันที่หรือเวลา ใช้งานได้ทั้งกับคอลัมน์ชนิด DATE, DATETIME, TIMESTAMP และแม้แต่สตริงที่แปลงเป็นวันที่ได้

ใช้กับวันที่ปัจจุบัน

mysql> SELECT YEAR(CURDATE()) AS OnlyYearFromCurrentDate;
+-------------------------+
| OnlyYearFromCurrentDate |
+-------------------------+
| 2018                    |
+-------------------------+
1 row in set (0.00 sec)

หรือใช้กับ NOW() ก็ได้:

mysql> SELECT YEAR(DATE(NOW())) AS OnlyYearFromCurrentDate;

ใช้กับคอลัมน์ชนิด VARCHAR (ข้อความ)

หากคอลัมน์เก็บวันที่เป็นข้อความ ต้องแปลงด้วย STR_TO_DATE() ก่อน:

mysql> CREATE TABLE ExtractYearDemo (
    -> YourDueTime VARCHAR(200)
    -> );
Query OK, 0 rows affected (1.15 sec)

mysql> INSERT INTO ExtractYearDemo VALUES ('27-10-2011');
mysql> INSERT INTO ExtractYearDemo VALUES ('28-11-2012');
mysql> INSERT INTO ExtractYearDemo VALUES ('29-12-2018');
mysql> INSERT INTO ExtractYearDemo VALUES ('01-01-2019');
mysql> SELECT YEAR(STR_TO_DATE(YourDueTime, '%d-%m-%Y')) AS OnlyYearFromDate 
    -> FROM ExtractYearDemo;
+------------------+
| OnlyYearFromDate |
+------------------+
| 2011             |
| 2012             |
| 2018             |
| 2019             |
+------------------+
4 rows in set (0.00 sec)

ฟังก์ชันเกี่ยวข้อง

ฟังก์ชันคืนค่า
YEAR(date)ปี (1000-9999)
MONTH(date)เดือน (1-12)
DAY(date)วันที่ (1-31)
QUARTER(date)ไตรมาส (1-4)
WEEK(date)สัปดาห์ในปี (0-53)

แนวทางปฏิบัติที่ดี: ควรเก็บวันที่ในชนิด DATE หรือ DATETIME ตรงๆ เพื่อประสิทธิภาพและความถูกต้อง แทนที่จะเก็บเป็น VARCHAR