เมื่อคอลัมน์เก็บวันที่เป็นตัวเลข INT รูปแบบ yyyymmdd (เช่น 20190108) สามารถแปลงเป็น DATE ได้โดยตรงด้วยฟังก์ชัน DATE() ใน MySQL
ตัวอย่างการสร้างตาราง
mysql> create table DemoTable (
Number int );
Query OK, 0 rows affected (0.48 sec)
เพิ่มข้อมูล INT รูปแบบ yyyymmdd
mysql> insert into DemoTable values(20190108); Query OK, 1 row affected (0.11 sec) mysql> insert into DemoTable values(20161231); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable values(20170411); Query OK, 1 row affected (0.09 sec)
แสดงข้อมูลก่อนแปลง
mysql> select * from DemoTable;
+----------+ | Number | +----------+ | 20190108 | | 20161231 | | 20170411 | +----------+ 3 rows in set (0.00 sec)
คำสั่งแปลง INT เป็น DATE
mysql> select date(Number) from DemoTable;
ผลลัพธ์
+--------------+ | date(Number) | +--------------+ | 2019-01-08 | | 2016-12-31 | | 2017-04-11 | +--------------+ 3 rows in set (0.00 sec)
คำอธิบาย: MySQL รองรับการแปลงตัวเลข 8 หลัก (YYYYMMDD) เป็น DATE ได้โดยอัตโนมัติเมื่อใช้ฟังก์ชัน DATE() หรือ CAST(Number AS DATE) เหมาะสำหรับข้อมูลที่นำเข้ามาจากระบบเก่า (Legacy) ที่เก็บวันที่เป็นตัวเลข
ข้อจำกัด: ตัวเลขต้องเป็นรูปแบบ YYYYMMDD อย่างแม่นยำ 8 หลัก หากเป็น 6 หลัก (YYMMDD) ต้องแปลงด้วยวิธีอื่น