使用 select 大小写检查具体日期

Check specific dates using select case

我有两个 table。第一个包含一些日期的数据,第二个包含所有 public 个假期。我的任务是为 table.

中的每条记录确定 DayType

例如,如果日期为“2015-09-08 22:33”,则输出为 "Sunday/Night Shift",或者如果日期为“2015-06-08 12:20”,则输出为 "Normal day".

我用过select案例,但效果不佳。

掠夺我的样本SQL Fiddle

除了使用 select case 语句之外,还有其他检查日期的方法吗?

您的案件订单需要处理。 当 CASE 为真时 MySQL 停止 'CASING'

您的第一个案例是 WHEN (WEEKDAY(pdate) BETWEEN 0 AND 4) THEN "Normal Day" 这意味着它不会在工作日检查假期

先查节假日再查夜班,再查weekdays/weekends

SELECT tbltest.datac,
(
CASE
   WHEN (DATE(pdate) IN (SELECT HolidayDate FROM tblholidays)) THEN "Holiday"
   WHEN (TIME(pdate) > '22:00:00' && (DAYNAME(pdate)="Sunday")) THEN "Night shift/Sunday"
   WHEN (TIME(pdate) > '22:00:00') THEN "Night shift"
   WHEN (WEEKDAY(pdate) BETWEEN 0 AND 4) THEN "Normal Day"
   WHEN ((DAYNAME(pdate))="Saturday") THEN "Saturday"
   WHEN ((DAYNAME(pdate))="Sunday") THEN "Sunday"
END) AS DayType
FROM tbltest