2012-03-23 107 views
0

我有一個表,其中包含列的記錄表示日期。鑑於記錄,我想選擇與記錄同一周內的所有記錄。 SQL如何做到這一點?SQL在同一周內獲得記錄

我應該說我正在使用SQLite。

+1

你到目前爲止有什麼? – 2012-03-23 04:54:46

+1

似乎你必須使用這樣的東西http://www.objectreference.net/post/SQL-Find-last-week-date-range.aspx但修改,以便開始日期是基於日期您選擇的記錄。 – 2012-03-23 04:59:51

回答

3

您可以使用DATEPARTwk得到當前一週。然後只是檢查平等。 在這種情況下,我還檢查了yy以確保您不檢查前一週的年份。

SELECT * 
FROM TABLE 
WHERE DATEPART(wk, TABLE.DATECOLUMN) 
     = DATEPART(wk, (SELECT DATECOLUMN FROM TABLE WHERE ID = GivenID)) 
    AND DATEPART(yy, TABLE.DATECOLUMN) = DATEPART(yy, (SELECT DATECOLUMN FROM TABLE WHERE ID = GivenID)) 

更新SQLITE

爲此在SQLLite,Refer to this SO question然後this article that states %W is what you use to get week and %Y for year。它給你:

SELECT * 
FROM TABLE 
WHERE STRFTIME('%W', TABLE.DATECOLUMN) 
     = STRFTIME('%W', (SELECT DATECOLUMN FROM TABLE WHERE ID = GivenID)) 
    AND STRFTIME('%Y', TABLE.DATECOLUMN) 
     = STRFTIME('%Y', (SELECT DATECOLUMN FROM TABLE WHERE ID = GivenID)) 
+0

這是否適用於SQLite? – Yang 2012-03-23 05:03:00

+0

它現在:)請參閱我的更新 – 2012-03-23 05:08:48

+0

好看又高雅! – Yang 2012-03-23 05:12:00

2

使用datediff()功能:

datediff(ww,start_date,end_date) < 1 
+0

它似乎不適用於SQLite。 :( – Yang 2012-03-23 05:03:39

0

您可以使用BETWEEN指定所需的記錄。

SELECT * FROM records WHERE datecolumn between 'YYYY/MM/DD' AND 'YYYY/MM/DD'