返回用户输入日期之前用户输入时间间隔内的所有记录
Posted
技术标签:
【中文标题】返回用户输入日期之前用户输入时间间隔内的所有记录【英文标题】:return all records within user input interval before user input date 【发布时间】:2014-10-07 18:37:05 【问题描述】:我需要返回日期在用户输入日期之前指定时间内的所有记录(很可能是一周,但可以是任何时间),我试过了,但它似乎不起作用:
where T.postdate >= DateADD(day, @Length, @StartDate)
其中@Length 和@StartDate 是用户在存储过程中输入的,但它的返回日期是几个月前的......
【问题讨论】:
“几个月前” - 几个月从何而来? 我有这个:where T.postdate 试试这个:T.postdate >= DateADD(day, -7, '2014-10-7')
带引号,否则 2014 - 10 -7=1997 是数学表达式,而不是日期
@user3825831 您的评论“where T.postdate
【参考方案1】:
如果我理解正确,你可以这样做:
http://sqlfiddle.com/#!6/7241b/4
create table test (someDate datetime)
insert into test (someDate)
select '2014-01-01'
union all select '2014-02-01'
union all select '2014-03-01'
union all select '2014-04-01'
union all select '2014-05-01'
union all select '2014-06-01'
union all select '2014-07-01'
union all select '2014-08-01'
union all select '2014-09-01'
union all select '2014-10-01'
union all select '2014-10-02'
union all select '2014-10-03'
union all select '2014-10-04'
union all select '2014-10-05'
union all select '2014-10-06'
union all select '2014-10-07'
union all select '2014-10-08'
union all select '2014-10-09'
union all select '2014-10-10'
union all select '2014-10-11'
declare @lengthInDays int, @startDate datetime
select @lengthInDays=5, @startDate='2014-10-02'
select *
from test
-- where "somedate" is after the start date minus the number of days input
where someDate >= dateadd(day, -@lengthInDays, @startDate)
-- and where the "someDate" is not greater than the date input
and someDate < @startDate
此实例中仅返回结果为2010-10-01
,因为它在@startDate 和@startDate 之前的 5 天之间
【讨论】:
【参考方案2】:Try this.
WHERE T.postdate >= DATEADD(week, -@Length, @StartDate)
【讨论】:
以上是关于返回用户输入日期之前用户输入时间间隔内的所有记录的主要内容,如果未能解决你的问题,请参考以下文章
使用用户通过winform输入从SQL Server获取日期[关闭]