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

การตรวจสอบความถูกต้องของวันที่ใน MySQL ด้วย Custom Function

การสร้างฟังก์ชันตรวจสอบวันที่ (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