7

我在数据库中有一个包含日期时间列的表。有没有办法我可以编写查询以确定记录是否在周末期间?

我想显示所有记录,并在每个结果行中有一个附加列来显示周末,如果它符合(星期五 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`
4

1 回答 1

20

你的逻辑是错误的。一天不能同时是工作日 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形成对比)

于 2012-08-27T13:20:41.020 回答