我有一个名为dbstorage
的表,其中包含year
和weekno
等列。
我需要选择年份和周数小于当前年份和当前周数。
我用过:
select * from dbstorage where year<=2011 and weekno<=13.
但它没有提供正确的数据,就像我有一个值 year:2010和weekno:25表示查询未选择此记录。
如何做到这一点?
答案 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())