查找相对于今天的记录

时间:2011-03-28 17:58:14

标签: sql

我有一个名为dbstorage的表,其中包含yearweekno等列。

我需要选择年份和周数小于当前年份和当前周数。

我用过:

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

但它没有提供正确的数据,就像我有一个值 year:2010和weekno:25表示查询未选择此记录。

如何做到这一点?

3 个答案:

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

答案 1 :(得分: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

答案 2 :(得分:0)

对于SQL Server,您还可以执行以下操作:

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