SQL получит записи за ту же неделю - PullRequest
0 голосов
/ 23 марта 2012

У меня есть таблица, которая содержит записи с колонкой, указывающей дату. Учитывая запись, я хотел бы выбрать все записи, которые находятся на той же неделе, что и запись. Как SQL может это сделать?

Я должен сказать, что я использую SQLite.

Ответы [ 3 ]

3 голосов
/ 23 марта 2012

Вы можете использовать DATEPART с wk, чтобы получить текущую неделю. Тогда просто проверьте на равенство. В этом случае я также проверил 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, См. Этот вопрос SO , а затем в этой статье, в которой говорится, что% W - это то, что вы используете для получения недели, а% Y для года . Что дает вам:

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))
2 голосов
/ 23 марта 2012

Используйте функцию datediff():

datediff(ww,start_date,end_date) < 1
0 голосов
/ 23 марта 2012

Вы можете использовать МЕЖДУ , чтобы указать нужные записи.

 SELECT * FROM records WHERE datecolumn between 'YYYY/MM/DD' AND 'YYYY/MM/DD'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...