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

สร้างชื่อตารางแบบไดนามิกจากปีปัจจุบันใน MySQL เช่น 2019

สร้างตารางตัวอย่าง

ขั้นแรก ให้สร้างตารางตัวอย่างชื่อ DemoTable1959 เพื่อเก็บข้อมูลชื่อผู้ใช้:

mysql> create table DemoTable1959 ( UserName varchar(20) ); Query OK, 0 rows affected (0.00 sec)

เพิ่มข้อมูลตัวอย่าง

แทรกข้อมูลทดสอบ 3 แถว:

mysql> insert into DemoTable1959 values('Chris'); Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1959 values('David'); Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1959 values('Bob'); Query OK, 1 row affected (0.00 sec)

ตรวจสอบข้อมูล

mysql> select * from DemoTable1959;
+----------+
| UserName |
+----------+
| Chris    |
| David    |
| Bob      |
+----------+
3 rows in set (0.00 sec)

สร้างตารางแบบไดนามิกจากปีปัจจุบัน

ใช้คำสั่ง PREPARE ร่วมกับ CONCAT() และ DATE_FORMAT(CURDATE(), '%Y') เพื่อสร้างชื่อตารางเป็นปีปัจจุบัน (เช่น 2019):

mysql> set @dynamicQuery = CONCAT('create table `', date_format(curdate(),'%Y'), '` as select UserName from DemoTable1959'); Query OK, 0 rows affected (0.00 sec)
mysql> prepare st from @dynamicQuery; Query OK, 0 rows affected (0.00 sec) Statement prepared
mysql> execute st; Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0

ตรวจสอบตารางที่สร้างขึ้น

เมื่อปีปัจจุบันคือ 2019 ตารางจะมีชื่อ `2019`:

mysql> select * from `2019`;
+----------+
| UserName |
+----------+
| Chris    |
| David    |
| Bob      |
+----------+
3 rows in set (0.00 sec)

คำอธิบายเพิ่มเติม

  • DATE_FORMAT(CURDATE(), '%Y') จะดึงปีปัจจุบันในรูปแบบ 4 หลัก (เช่น 2024)
  • เครื่องหมาย backtick (`) ใช้ครอบชื่อตารางเพื่อรองรับชื่อที่เป็นตัวเลขหรือคำสงวน
  • วิธีนี้เหมาะสำหรับการสร้างตารางรายปี (Partitioning แบบ Manual) หรือการเก็บ Log ประจำปี