2016-09-14 113 views
0

我需要找出兩個日期之間的記錄,但棘手的部分是獲得過去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)) 

回答

0
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) 
1

換句話說,你只需要十二月份的記錄,在過去的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

相關問題