สร้างตารางตัวอย่าง
ขั้นแรก ให้สร้างตารางตัวอย่างชื่อ 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 ประจำปี