2017-04-22 134 views
-1

我想要其ID加入星期六到星期五晚上的ID。選擇當前周的日期從星期六開始

SELECT id 
    FROM signup 
WHERE yearweek(DATE(datejoin), 6) = yearweek(curdate(), 6) 
+1

我的英文不是很流利,我可以給你更好的解釋你的問題嗎? –

+0

實際上我想從上個星期六到這個星期五晚上的ID。所以我應該寫什麼查詢?/ – tom

+0

請參閱https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-一個非常簡單的sql查詢 – Strawberry

回答

1

可以使用WeekDay函數,這個函數返回一週中的每天從0週一的整數值至6日,如果從當前日期減去平日你將得到最後一個星期一的日期,如果你想下一個週五的日期,你可以用這樣的查詢得到它:

CURDATE() - INTERVAL WEEKDAY(CURDATE()) - 4 DAY 

在你查詢你想從週六開始的一週至週五查詢,從而導致依賴於當前星期幾,如果當前星期幾是在星期五之前(從0到4),你應該得到下一個星期五的日期,但是如果當前星期幾在星期五(5或6)之後,你應該得到下一個星期五的日期!,星期六結束)有這種情況太

看看這個查詢,我希望這是明確的足夠你:

SELECT id FROM signup WHERE 
datejoin BETWEEN 
(CASE 
    WHEN WEEKDAY(CURDATE()) > 4 THEN 
    (CURDATE() - INTERVAL WEEKDAY(CURDATE()) - 5 DAY) 
    ELSE 
    (CURDATE() - INTERVAL WEEKDAY(CURDATE()) + 2 DAY) 
END) 
    AND 
(CASE 
    WHEN WEEKDAY(CURDATE()) > 4 THEN 
    (CURDATE() - INTERVAL WEEKDAY(CURDATE()) - 11 DAY) 
    ELSE 
    (CURDATE() - INTERVAL WEEKDAY(CURDATE()) - 4 DAY) 
    END) 
+0

沒有它給出錯誤的輸出。 – tom

+0

我想你給出了很好的答案。但我的系統將在星期六自動運行此查詢..所以我只想要這種情況。 例如我的系統將在4月22日上午12點運行查詢。那麼數據應該是從上個星期六-15april(上午12點)到這個星期五-21月4日(晚上11點59分)。 – tom

+0

我認爲查詢很清楚,您可以根據需要更改它,是否還有其他問題? –

0

答:

從註冊SELECT id其中間(CURRENT_DATE datejoin - 間隔7天)和CURRENT_DATE

相關問題