我在MYSQL中创建一个调度数据库。我有一个View,它从请假(假期,假期等)列表中获取信息,并显示日期。 我在尝试查看视图时收到错误1292:不正确的日期值。我知道这个错误通常是在日期格式不正确的情况下,但所有数据都已正确格式化(yyyy-mm-dd)。我真的很沮丧,我似乎找不到任何文献来修改这个问题。
这是视图
CREATE
ALGORITHM = UNDEFINED
DEFINER = `root`@`localhost`
SQL SECURITY DEFINER
VIEW `db`.`complete` AS
SELECT
`db`.`datetable`.`Date` AS `D`,
`db`.`mdcodes`.`Physician` AS `MD`,
SCHEDULER(`db`.`datetable`.`Date`,
db`.`mdcodes`.`Physician`) AS `Status`
FROM
(`db`.`mdcodes`
JOIN `db`.`datetable`)
这是函数
CREATE DEFINER=`root`@`localhost` FUNCTION `Scheduler`(MD VARCHAR(40), requestedDate Date) RETURNS varchar(40) CHARSET utf8
BEGIN
DECLARE workTime VARCHAR(40);
if !(isNull((SELECT LeaveType from LeaveSchedule where Dates=requestedDate AND Physician = MD)))
THEN SET workTime = (SELECT LeaveType from LeaveSchedule where Dates=requestedDate AND Physician = MD);
elseif (((SELECT weekOfMonth from clinics where Physician = MD)) = "A")
THEN SET workTime = (SELECT ClinicTimes from clinics where Physician = MD AND `Day` = DayOfWeek(requestedDate));
END IF;
RETURN workTime;
END
此处的目标是使用视图字段对自传播进行排序,因此该函数将相应地显示在视图中同一行中的日期和医生。这里的任何帮助将非常感谢!
编辑:我更改了其中一列的名称,并更改了对该列的所有引用,并收到错误1242:子查询返回的行数超过1行。
根据要求,以下是一些数据输入:
Datetable (date datatype) MDCodes (varchar(20) datatype)
|Date| |Physician|
2016-07-01 Doc1
2016-07-02 Doc2
函数中使用的表不是问题,当单独使用时,该函数可以正常工作。