该表有8列,doctor\u id和其他7列,分别以星期(sat、sun,…)的名称命名。如果医生(ex:id=1)安排在一天(ex:sat)的(ex:10:00:00)中,则会这样插入:
INSERT INTO doctors_schedule (doctor_id, sat) VALUES (1,"10:00:00");
触发器将在每天的特定时间触发以获取今天的日程安排,它将在其中使用以下查询:
SELECT doctor_id, DATE_FORMAT(NOW(), "%a")
FROM doctors_schedule
WHERE DATE_FORMAT(NOW(), "%a") IS NOT NULL;
这个查询没有抛出错误,但是它返回所有没有任何筛选器的记录
2条答案
按热度按时间3qpi33ja1#
如果我没有弄错,这将总是返回null,因为你现在过滤的不是null
这是您的过滤器:格式化当前日期
current
date
格式化is not null
而不是NOW()
使用日期列s5a0g9ez2#
您不能这样动态地确定列名。date格式将返回字符串值,而不是列名。不过,像这样的办法也许行得通。
coalesce返回其列表中的第一个非空值;如果“day”字段具有空字符串而不是空值,则可以
COALESCE(NULLIF(Sun, ''), NULLIF(Mon, ''), ...) AS timeOfDay
,或使用类似于where中的大小写(实际上,除了IS NOT NULL
后面的部分。)