我有一個名爲dbstorage
的表,它有year
和weekno
這樣的列。查找相對於今天的記錄
我需要選擇小於當年和本週的year和weekno。
我用:
select * from dbstorage where year<=2011 and weekno<=13.
但它是不是給像正確的數據,如果我有一個值 年:2010年和weekno:25點的手段,查詢不選擇該記錄。
這怎麼辦?
我有一個名爲dbstorage
的表,它有year
和weekno
這樣的列。查找相對於今天的記錄
我需要選擇小於當年和本週的year和weekno。
我用:
select * from dbstorage where year<=2011 and weekno<=13.
但它是不是給像正確的數據,如果我有一個值 年:2010年和weekno:25點的手段,查詢不選擇該記錄。
這怎麼辦?
你可以把它分解出兩種情況,並使用or
SELECT * /*<-- But don't use * List the columns explicitly*/
FROM dbstorage
WHERE (year = 2011
AND weekno <= 13)
OR year < 2011
編輯
但And
邏輯可能是更有效的
SELECT *
FROM dbstorage
WHERE (year <= 2011)
AND (year < 2011
OR weekno <= 13)
你要分手了搜索到多個部分:
select * from dbstorage
where
(year = 2011 and weekno <= 13) -- will catch all weeks in 2011 PRIOR to this one
or (year < 2011) -- will catch all weeks in 2010 and earlier
對於SQL Server,你也可以這樣做:
SELECT *
FROM dbstorage
WHERE (year = DATEPART(yyyy, GETDATE())
AND weekno <= DATEPART(ww, GETDATE()))
OR year < DATEPART(yyyy, GETDATE())