MySQL检查datetime列是否在周末期间

cho*_*xin 4 mysql datetime

我在数据库中有一个带有datetime列的表.有没有办法可以编写我的查询来确定记录是否在周末期间?

我想显示所有记录,并在每个结果行中有一个额外的列,如果它符合(星期五1730小时之后)或(星期日2359小时之前)的标准,则显示周末.

以下是我目前所拥有的,但似乎有些不对劲.:( 任何帮助将不胜感激. :)

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`
Run Code Online (Sandbox Code Playgroud)

Ale*_*thy 16

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

条件应该是

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

编辑: DAYOFWEEK实际上返回1星期日和7星期六(与基于零的DATE_FORMAT相反)

  • DAYOFWEEK(记录时间)IN(1,7) (3认同)