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

MySQL ไม่มีฟังก์ชัน Week of Month แบบ Built-in คำนวณได้อย่างไร?

MySQL ไม่มีฟังก์ชันมาตรฐานสำหรับ "สัปดาห์ของเดือน" ต้องคำนวณด้วยสูตรเอง

สูตรคำนวณ

SELECT WEEK(yourDateColumn, 5) - WEEK(DATE_SUB(yourDateColumn, INTERVAL DAYOFMONTH(yourDateColumn) - 1 DAY), 5) + 1 AS week_of_month FROM yourTableName;

หลักการ: หาสัปดาห์ของวันที่ลบด้วย สัปดาห์ของวันแรกของเดือน + 1

ตัวอย่างการใช้งาน

สร้างตาราง:

mysql> create table FirstWeekOfMonth (
    -> Id int NOT NULL AUTO_INCREMENT primary key,
    -> yourdate date
    -> );
Query OK, 0 rows affected (2.50 sec)

เพิ่มข้อมูล:

mysql> insert into FirstWeekOfMonth(yourdate) values('2019-01-18');
mysql> insert into FirstWeekOfMonth(yourdate) values('2019-04-19');
mysql> insert into FirstWeekOfMonth(yourdate) values('2019-05-20');
mysql> insert into FirstWeekOfMonth(yourdate) values('2019-12-31');
mysql> insert into FirstWeekOfMonth(yourdate) values('2019-10-05');
mysql> insert into FirstWeekOfMonth(yourdate) values('2019-08-25');

ข้อมูล:

+----+------------+
| Id | yourdate   |
+----+------------+
|  1 | 2019-01-18 |
|  2 | 2019-04-19 |
|  3 | 2019-05-20 |
|  4 | 2019-12-31 |
|  5 | 2019-10-05 |
|  6 | 2019-08-25 |
+----+------------+

คำนวณสัปดาห์ของเดือน (mode 5 = สัปดาห์เริ่มวันจันทร์):

mysql> SELECT WEEK(yourdate, 5) - WEEK(DATE_SUB(yourdate, INTERVAL DAYOFMONTH(yourdate) - 1 DAY), 5) + 1 as FirstWeekDemo from FirstWeekOfMonth;

ผลลัพธ์:

+---------------+
| FirstWeekDemo |
+---------------+
| 3             |
| 3             |
| 4             |
| 6             |
| 1             |
| 4             |
+---------------+

เช่น 2019-01-18 อยู่สัปดาห์ที่ 3 ของเดือนมกราคม