2017-08-05 62 views
-3

如何取得當前週數據直到今天的日期?如何使用查詢獲取當前星期的數據直到今天的日期?

示例 - 本週從2017-08-01開始至2017-08-07和今天的日期爲2017-08-03。我想使用查詢從2017-08-01到2017-08-03獲取數據。

This is query - 

SELECT * 
    FROM user_data 
    WHERE YEARWEEK(`date`, 1) = YEARWEEK(CURDATE(), 1) 
+0

'其中datecol> =「從上週的東西2017-08-01''? –

+0

@GordonLinoff,謝謝你的回覆。在這種情況下,我需要獲取星期的開始日期並在查詢中傳遞它。沒有約會可以通過嗎? –

+0

@GordonLinoff,它返回2017-08-01之後的所有數據,不是當前星期。 –

回答

1

我解決了我的問題。

SELECT * 
FROM current_week 
WHERE YEARWEEK(`dt`, 1) = YEARWEEK(CURDATE(), 1) and dt <= curdate() order by dt 

這工作正常。

0

這個在日曆年的最後和第幾周變得棘手。

首先你需要決定你的星期是星期天還是星期一開始。這是基於您的國家管轄區的商業慣例。在北美,通常是星期天。在歐洲有時是星期一。

您需要一個計算基於日期的日曆周的第一個時刻的表達式。

這是從週日開始的這種表達。

FROM_DAYS(TO_DAYS(CURDATE()) -MOD(TO_DAYS(CURDATE()) -1, 7)) 

這是星期一開始的星期一。 (注意-2

FROM_DAYS(TO_DAYS(CURDATE()) -MOD(TO_DAYS(CURDATE()) -2, 7)) 

現在你可以從你的表是在本週選擇的東西。

SELECT whatever, whatever 
    FROM user_data 
    WHERE `date` >= FROM_DAYS(TO_DAYS(CURDATE()) -MOD(TO_DAYS(CURDATE()) -1, 7)) 

如果你想之前的本週使用這種

SELECT whatever, whatever 
    FROM user_data 
    WHERE `date` >= FROM_DAYS(TO_DAYS(CURDATE()) -MOD(TO_DAYS(CURDATE()) -1, 7)) - INTERVAL 7 DAY 
    AND `date` < FROM_DAYS(TO_DAYS(CURDATE()) -MOD(TO_DAYS(CURDATE()) -1, 7)) 
+0

感謝您的回覆,此查詢返回所有當前星期的日期。 –

+0

SELECT * FROM current_week WHERE YEARWEEK(dt,1)= YEARWEEK(CURDATE(),1)和dt <= curdate()這個查詢正在工作。 –

相關問題