初学数据库
原本应该是查看星期一入职的员工
SELECT *,DAYNAME(hiredate)
FROM emp
WHERE DAYNAME(hiredate)= 'Monday';
然后忘了加条件变成了
SELECT *,DAYNAME(hiredate)
FROM emp
WHERE DAYNAME(hiredate);
然后就变成了排除星期一了,请问这个地方是什么原理呢?
初学数据库
原本应该是查看星期一入职的员工
SELECT *,DAYNAME(hiredate)
FROM emp
WHERE DAYNAME(hiredate)= 'Monday';
然后忘了加条件变成了
SELECT *,DAYNAME(hiredate)
FROM emp
WHERE DAYNAME(hiredate);
然后就变成了排除星期一了,请问这个地方是什么原理呢?
select if(DAYNAME('2022-01-17'), 0, 1)
UNION all
select if(DAYNAME('2022-01-18'), 0, 1)
UNION all
select if(DAYNAME('2022-01-19'), 0, 1)
UNION all
select if(DAYNAME('2022-01-20'), 0, 1)
UNION all
select if(DAYNAME('2022-01-21'), 0, 1)
UNION all
select if(DAYNAME('2022-01-22'), 0, 1)
UNION all
select if(DAYNAME('2022-01-23'), 0, 1)
UNION all
select if(DAYNAME('2022-01-24'), 0, 1)
查看结果:
可以看见,星期一dayname函数返回的false
where语句中条件为false,所以就会排除星期一的数据了
附上mysql开源代码,dayname函数位置:https://github.com/mysql/mysql-server/blob/6846e6b2f72931991cc9fd589dc9946ea2ab58c9/sql/item_timefunc.h#:~:text=class-,Item_func_dayname,-final%20%3A%20public%20Item_func_weekday