2014-04-26 73 views
4

我有一個存儲過程,它根據匹配日期輸入的日期來獲取記錄,該日期輸入迄今爲止工作正常。 表格中的日期和我的輸入日期都格式化爲日期時間。SQL Server:通過匹配的月份和日期來比較日期

而不是比較完整的日期,我想改變這一點,以便它只比較每月和每天,以便它與任何一年的輸入工作。

實施例: 在表中一個日期被保存爲2013-04-30和我的輸入日期爲2014-04-30。 我想要的是存儲過程仍然返回獨立於年份的記錄,只要月份和日期匹配即可。

我的存儲過程:

ALTER PROCEDURE [dbo].[FetchDays] 
    @inputDate datetime 
AS 
BEGIN 
    SET NOCOUNT ON; 
    SELECT  dateID, 
       dayDT, 
       countries, 
       regions 
    FROM  DaysDT 
    WHERE  dayDT = @inputDate 
    FOR XML PATH('daysFixed'), ELEMENTS, TYPE, ROOT('root') 

END 

非常感謝任何幫助,邁克。

回答

8

你可以做這樣的事情;)

ALTER PROCEDURE [dbo].[FetchDays] 
    @inputDate datetime 
AS 
BEGIN 
    SET NOCOUNT ON; 
    SELECT  dateID, 
       dayDT, 
       countries, 
       regions 
    FROM  DaysDT 
    WHERE  
     DAY(dayDT) = DAY(@inputDate) --Extract and compare day 
     AND MONTH(dayDT) = MONTH(@inputDate) --Extract and compare month 
    FOR XML PATH('daysFixed'), ELEMENTS, TYPE, ROOT('root') 

END 
+0

非常感謝,這是完美的!將盡快接受。 :) – Mike

2

試試這個:

WHERE datepart(day, dayDT) = datepart(day,@inputDate) 
AND datepart(month, dayDT) = datepart(month,@inputDate) 

這會比較你的整體日的日期和月份部分,而不檢查一年。

+0

感謝,這是它 - 其他職位只是幾秒鐘的速度更快。 – Mike

+0

不用擔心,重要的是你承認無論誰花時間去幫助,而且給出的答案對於有類似問題的其他人來說是一個很好的資源。 –