การสร้างฟังก์ชันใน MySQL เพื่อแปลงวันที่เป็นรูปแบบภาษาไทย

CREATE FUNCTION CONVERT_DATE_TO_THAI(param_date date)
RETURNS VARCHAR(255)
BEGIN
	SET @month_th = 'มกราคม,กุมภาพันธ์,มีนาคม,เมษายน,พฤษภาคม,มิถุนายน,กรกฎาคม,สิงหาคม,กันยายน,ตุลาคม,พฤศจิกายน,ธันวาคม';
	SET @day = DAY(param_date); 
	SET @month= SUBSTRING_INDEX(SUBSTRING_INDEX(@month_th, ',', MONTH(param_date)), ',' , -1); 
	SET @year = YEAR(param_date) + 543;
	RETURN CONCAT(@day, ' ', @month, ' ', @year);
END;

1. กำหนดค่าคงที่รายชื่อเดือนและชื่อวันในภาษาไทย

SET @month_th = 'มกราคม,กุมภาพันธ์,มีนาคม,เมษายน,พฤษภาคม,มิถุนายน,กรกฎาคม,สิงหาคม,กันยายน,ตุลาคม,พฤศจิกายน,ธันวาคม';

2. ใช้ฟังก์ชันใน MySQL เพื่อดึงค่าวันที่ เดือน และปี

SET @day = DAY(param_date);
SET @month= SUBSTRING_INDEX(SUBSTRING_INDEX(@month_th , ',', MONTH(param_date)), ',' , -1);
SET @year= YEAR(param_date) + 543;

  • @day เก็บค่าวันที่ (Day) จากวันที่ที่รับเข้ามา
  • @month เก็บค่าชื่อเดือน (Month) ในภาษาไทย โดยใช้ฟังก์ชัน MONTH เพื่อหาค่าที่ตรงกับเดือน
  • @year เก็บค่าปี (Year) ที่เพิ่มขึ้นจากปีที่รับเข้ามา โดยเพิ่มค่า 543 เพื่อแปลงเป็นปีที่ใช้ในปฏิทินไทย

3. ส่งค่าผลลัพธ์กลับ

RETURN CONCAT(@day ' ', @month, ' ', @year);

ใช้ฟังก์ชัน CONCAT เพื่อรวมค่าวันที่ ชื่อเดือน และปีเข้าด้วยกัน โดยเว้นวรรคระหว่างข้อมูล

ฟังก์ชันข้างต้นสามารถนำไปใช้เพื่อแปลงวันที่ในรูปแบบภาษาไทยในฐานข้อมูล MySQL ได้ โดยสามารถเรียกใช้ฟังก์ชันดังกล่าวได้ด้วยคำสั่ง

SELECT CONVERT_DATE_TO_THAI('2021-06-23') AS thai_date;

ผลลัพธ์ที่คาดหวัง

23 มิถุนายน 2564