我在数据库中有一个带有datetime列的表。有没有办法可以编写我的查询来确定记录是否在周末期间?
我想显示所有记录,并在每个结果行中有一个额外的列,以显示周末,如果它符合(17:30周五之后)或(周日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`
答案 0 :(得分:16)
你的逻辑错了。一天不能是工作日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相比)