การสร้างฟังก์ชันตรวจสอบวันที่ (Date Validation)
MySQL ไม่มีฟังก์ชัน built-in สำหรับตรวจสอบว่าสตริงเป็นวันที่ถูกต้องหรือไม่ สามารถสร้าง Stored Function เองได้
โค้ดฟังก์ชัน
SET GLOBAL log_bin_trust_function_creators = 1;
DELIMITER //
CREATE FUNCTION isValidDate(actualDate VARCHAR(255))
RETURNS INT
BEGIN
DECLARE flag INT;
IF (SELECT LENGTH(DATE(actualDate)) IS NOT NULL) THEN
SET flag = 1;
ELSE
SET flag = 0;
END IF;
RETURN flag;
END //
DELIMITER ;
การทดสอบ
-- กรณี 1: NULL
SELECT isValidDate(NULL);
-- ผลลัพธ์: 0 (ไม่ใช่วันที่)
-- กรณี 2: วันที่ถูกต้อง
SELECT isValidDate('2019-10-21');
-- ผลลัพธ์: 1 (เป็นวันที่)
หลักการทำงาน
ฟังก์ชัน DATE() จะคืนค่า NULL หากแปลงไม่ได้ การตรวจสอบ LENGTH(DATE(...)) IS NOT NULL จึงบอกได้ว่าสตริงเป็นวันที่ถูกต้องหรือไม่
ข้อจำกัด: ฟังก์ชันนี้ต้องการสิทธิ์ SUPER สำหรับ log_bin_trust_function_creators และทำงานได้กับรูปแบบวันที่มาตรฐานของ MySQL