我有一个包含记录的表,其中一列表示日期。给定记录,我想选择与记录在同一周的所有记录。 SQL如何做到这一点?
我应该说我正在使用SQLite。
答案 0 :(得分:3)
您可以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,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))
答案 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'