我在数据库中有一个带有datetime列的表。有没有一种方法可以写我的查询来确定记录是否在周末内?

我要显示所有记录,并在每个结果行中都有一个附加列来显示“周末”,如果它符合(星期五1730hours之后)或(星期日2359hours之前)的条件。

以下是我目前拥有的东西,但似乎有些问题。 :( 任何帮助将不胜感激。 :)

SELECT recordTime, DATE_FORMAT(recordTime, "%W %w %T"), (( (DATE_FORMAT(recordTime, "%T") > '17:30:00' AND DAYOFWEEK(recordTime)=6)
    AND (DATE_FORMAT(recordTime, "%T") < '23:59:59' AND DAYOFWEEK(recordTime)=7) )
    OR (DATE_FORMAT(recordTime, "%T") < '23:59:59' AND DAYOFWEEK(recordTime)=0)) AS Weekend
FROM `waitrecord`

最佳答案

你的逻辑是错误的。一天不能同时是工作日6和工作日7。

条件应该是

DAYOFWEEK(recordTime) = 7
or DAYOFWEEK(recordTime) = 1
or (DATE_FORMAT(recordTime, "%T") > '17:30:00' AND DAYOFWEEK(recordTime) = 6)

编辑:DAYOFWEEK实际上返回星期日的1和星期六的7(与之相对的DATE_FORMAT从零开始)

09-19 18:05