2012-03-23 7 views
0

私は列を持つレコードを含むテーブルが日付を示しています。レコードがあれば、レコードと同じ週にあるすべてのレコードを選択したいと思います。 SQLはどのようにそれを行うことができますか?SQLは同じ週にレコードを取得します

私はSQLiteを使用していると言えます。

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

あなたはこれまで何を得ていますか? –

+1

http://www.objectreference.net/post/SQL-Find-last-week-date-range.aspxのようなものを使う必要があるようですが、開始日が選択したレコード –

答えて

3

あなたは現在の週を取得するためにwkDATEPARTを使用することができます。次に、平等をチェックしてください。 この場合、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)) 

SQLLite、Refer to this SO question、その後this article that states %W is what you use to get week and %Y for yearでこれを行うにはSQLiteの FOR UPDATE

。あなたを与える:

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

+0

それは今です:)私の更新を参照してください –

+0

素敵で優雅な! – Yang

2

datediff()機能を使用してください。

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

SQLiteでは動作しないようです。 :( – Yang

0

あなたがするレコードを指定するためにBETWEENを使用することができます。

関連する問題