使用选择案例检查特定日期
Posted
技术标签:
【中文标题】使用选择案例检查特定日期【英文标题】:Check specific dates using select case 【发布时间】:2015-08-10 11:43:47 【问题描述】:我有两张桌子。一个包含一些日期的数据,第二个包含所有公共假期。我的任务是确定表中每条记录的 DayType。
例如,如果日期为“2015-09-08 22:33”,则输出为“周日/夜班”,或者如果日期为“2015-06-08 12:20”,则输出为“正常日”。
我使用了选择案例,但我没有得到好的结果。
在我的样本 SQL Fiddle 中获得战利品
有没有其他方法可以检查日期而不是使用 select case 语句?
【问题讨论】:
【参考方案1】:您订购的案例需要工作。
当CASE
为真时,mysql 停止“CASING”
您的第一个案例是WHEN (WEEKDAY(pdate) BETWEEN 0 AND 4) THEN "Normal Day"
这意味着它不会在工作日检查假期
首先检查假期,然后是夜班,然后是工作日/周末
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
【讨论】:
以上是关于使用选择案例检查特定日期的主要内容,如果未能解决你的问题,请参考以下文章
我在表单中使用了日期范围选择器如何禁用从 MySQL 数据库中获取的特定日期范围