MYSQL 存储过程 if else dayname
MYSQL stored procedure if else dayname
我需要编写一个存储过程来找出教师的加入日期,如果是星期一,它应该显示星期一,否则它应该显示 Weekday
。我是存储过程的新手,如何显示“工作日”?
我准备了一个代码,但出现错误。(dat_teacher_doj 是日期数据类型)
Delimiter //
CREATE PROCEDURE check_date(IN doj date)
BEGIN
select dayname(dat_teacher_doj)as day from tbl_teachers where dat_teacher_doj=doj;
IF day!='Monday' THEN
SET day='Weekday';
END IF
END //
Delimiter ;
我收到错误:未知系统变量 'day'
您首先需要声明您的变量。然后在声明变量后使用 SELECT ... INTO。
DELIMITER //
CREATE PROCEDURE check_date (IN teacher_id VARCHAR(100))
BEGIN
DECLARE day VARCHAR(100);
SELECT dayname(dat_teacher_doj) INTO day FROM tbl_teachers WHERE id = teacher_id;
SELECT CASE WHEN day != 'Monday' THEN 'Weekday' ELSE day END;
END;
//
DELIMITER ;
调用过程时,需要在输入日期前后加上引号。
call check_date('1982-01-11');
我需要编写一个存储过程来找出教师的加入日期,如果是星期一,它应该显示星期一,否则它应该显示 Weekday
。我是存储过程的新手,如何显示“工作日”?
我准备了一个代码,但出现错误。(dat_teacher_doj 是日期数据类型)
Delimiter //
CREATE PROCEDURE check_date(IN doj date)
BEGIN
select dayname(dat_teacher_doj)as day from tbl_teachers where dat_teacher_doj=doj;
IF day!='Monday' THEN
SET day='Weekday';
END IF
END //
Delimiter ;
我收到错误:未知系统变量 'day'
您首先需要声明您的变量。然后在声明变量后使用 SELECT ... INTO。
DELIMITER //
CREATE PROCEDURE check_date (IN teacher_id VARCHAR(100))
BEGIN
DECLARE day VARCHAR(100);
SELECT dayname(dat_teacher_doj) INTO day FROM tbl_teachers WHERE id = teacher_id;
SELECT CASE WHEN day != 'Monday' THEN 'Weekday' ELSE day END;
END;
//
DELIMITER ;
调用过程时,需要在输入日期前后加上引号。
call check_date('1982-01-11');