使用选择案例检查特定日期

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

【讨论】:

以上是关于使用选择案例检查特定日期的主要内容,如果未能解决你的问题,请参考以下文章

如何选择特定日期的某些行

如何在 iOS UItest 中选择本地化的日期选择器项目

我在表单中使用了日期范围选择器如何禁用从 MySQL 数据库中获取的特定日期范围

Java:检查当前日期是不是在特定日期范围内[重复]

如何将枚举案例传递给使用“if case”检查属性案例的函数

Swift - 可选日期比较