Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Xác thực ngày tháng trong MySQL bằng hàm tùy chỉnh (Custom Function)

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.