【发布时间】:2020-11-20 15:51:27
【问题描述】:
我正在尝试根据 SQL Server 中的输入字符串过滤日期范围。
-- 'All Years', '30', '60', '90', '2019', '2020', etc.
declare @dateRange nvarchar(20) = '90'
select
[date],
[data]
from someTable
where (
@dateRange = case @dateRange
when 30 then date >= getDate() - 30
when 60 then date >= getDate() - 60
when 90 then date >= getDate() - 90
when 'All Years' then date
else datePart('year', date) = @dateRange
end
)
如何使用 where 子句来选择日期范围?
【问题讨论】:
-
'2019'是什么“日期范围”?你把问题复杂化了。有 2 个参数,一个开始日期和一个结束日期,并使用>=和<逻辑。 -
< 100是日期范围,> 2000是年份范围 -
2000 不是一个范围,而是一个数字。与 100 一样。范围类似于 30-60,或者日期为 2020-01-01 到 2020-06-30。
-
它们是隐含的范围...过去 30 天、2019 年全年等
标签: sql sql-server date where-clause