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 

希望这有助于

+0

有一天器件还。 – User2682