SQL Server:查找两个日期之间的记录
问题描述:
我需要找出两个日期之间的记录,但棘手的部分是获得过去5年之间的记录在通过日期之间。例如,我将开始日期作为“12/01”和结束日期作为“12/31”,因此我需要过去5年的“12月01日”和“12月31日”之间的记录。这意味着记录应该在每年的月份和日期之间。不是所有的月份。我正在尝试以下但它不工作:SQL Server:查找两个日期之间的记录
DECLARE @StartDate DATE = '12/01/2011', @EndDate DATE = '12/01/2016'
DECLARE @StartDay VARCHAR(2) = '01'
,@EndDay VARCHAR(2) = '31'
,@StartMonth VARCHAR(2) = '12'
,@EndMonth VARCHAR(2) = '12'
,@CurrentYear VARCHAR(2) = '2016'
SELECT * FROM [Records]
WHERE [UpdatedDate] BETWEEN @StartDate AND @EndDate
AND (DAY([UpdatedDate]) = CAST(@StartDay AS INT) OR DAY([UpdatedDate]) = CAST(@EndDay AS INT))
AND (MONTH([UpdatedDate]) = CAST(@StartMonth AS INT) OR MONTH([UpdatedDate]) = CAST(@EndMonth AS INT))
AND (YEAR([UpdatedDate]) = CAST((@CurrentYear - 5) AS INT) OR YEAR([UpdatedDate]) = CAST(@CurrentYear AS INT))
答
select
*
from
Records
where
(year(UpdatedDate) between @CurrentYear and (@CurrentYear + 5))
and (month(UpdatedDate) between @StartMonth and @EndMonth)
and (day(UpdatedDate) between @StartDay and @EndDay)
答
换句话说,你只需要十二月份的记录,在过去的5年。 您可以检查DATE字段的月份和年份部分。 这应该是像今年betweeen 2010年和2015年和月= 12
事情是这样的:
select id,name,bookyear
from tab1
where year(bookyear) BETWEEN 2010 AND 2015;
and month(bookyear)= 12
希望这有助于
有一天器件还。 – User2682