2011-03-28 84 views
0

我有一個名爲dbstorage的表,它有yearweekno這樣的列。查找相對於今天的記錄

我需要選擇小於當年和本週的year和weekno。

我用:

select * from dbstorage where year<=2011 and weekno<=13. 

但它是不是給像正確的數據,如果我有一個值 年:2010年和weekno:25點的手段,查詢不選擇該記錄。

這怎麼辦?

回答

1

你可以把它分解出兩種情況,並使用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) 
0

你要分手了搜索到多個部分:

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 
0

對於SQL Server,你也可以這樣做:

SELECT * 
FROM dbstorage 
WHERE (year = DATEPART(yyyy, GETDATE()) 
     AND weekno <= DATEPART(ww, GETDATE())) 
OR year < DATEPART(yyyy, GETDATE())