Giới thiệu
MySQL cho phép tạo hàm người dùng (User-Defined Function) để đóng gói logic kiểm tra ngày tháng hợp lệ. Hàm dưới đây dùng DATE() để thử chuyển đổi: nếu thành công trả về 1, ngược lại 0.
Tạo hàm
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 ;
Kiểm tra
Trường hợp 1: Giá trị NULL
SELECT isValidDate(NULL); -- Kết quả: 0
Trường hợp 2: Ngày hợp lệ
SELECT isValidDate('2019-10-21'); -- Kết quả: 1
Lưu ý: Cách này phụ thuộc vào hành vi của DATE() khi nhận chuỗi không hợp lệ (trả về NULL). Từ MySQL 8.0, có thể dùng STR_TO_DATE kết hợp kiểm tra IS NOT NULL để rõ ràng hơn. Cần bật log_bin_trust_function_creators nếu bật binary logging.