2012-08-27 98 views
3

我有一個表中的日期時間列在數據庫中。有沒有一種方法可以編寫我的查詢來確定記錄是否在週末期間?MySQL檢查日期時間列是否在週末期

我想顯示所有記錄,並在每個結果行中顯示一個附加列,以顯示週末是否符合(星期五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` 
+0

查詢似乎是錯誤的:應該不是語句的替代者是:SELECT .... FROM表WHERE .... AND ....或 –

回答

14

你的邏輯是錯誤的。一天不能同時在工作日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是從零開始)

+1

明白了。這個工程很好,除了索引從1開始的星期日而不是0,但我現在需要的作品。非常感謝! – chongzixin

+0

根據http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html#function_date-format,週日是0 ... – nonchip

+0

,但星期六是6,所以有一個錯字。 – nonchip