SQL在同一周获取记录

时间:2012-03-23 04:51:29

标签: sql sqlite select

我有一个包含记录的表,其中一列表示日期。给定记录,我想选择与记录在同一周的所有记录。 SQL如何做到这一点?

我应该说我正在使用SQLite。

3 个答案:

答案 0 :(得分: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 questionthis 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))

答案 1 :(得分:2)

使用datediff()功能:

datediff(ww,start_date,end_date) < 1

答案 2 :(得分:0)

您可以使用BETWEEN指定所需的记录。

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