2012-08-06 139 views
0

我有一個ASP頁面鏈接到SQL服務器。基本上我需要一些查詢將提取特定日期之間的所有記錄。我需要過去6個月的每月分類。ASP/SQL Server - 從/到基於年份的月份的日期

所以,這個月的月(這是第6),所以第一個查詢需要有這樣一行

AND DATE BETWEEN '2012-08-01' and '2012-08-31' 

我需要5個查詢,這不能不

AND DATE BETWEEN '2012-07-01' and '2012-07-31' 

。 ..

AND DATE BETWEEN '2012-06-01' and '2012-06-30' 

等等回到3月。

有沒有辦法做到這一點?我試圖做下面的VB腳本,但它沒有給出正確的結果;

ThisMonth = Date 
Month1 = DateAdd("m", -1, Date) 
Month1From = DateAdd("d", 1, Month1 - Day(Date)) 
Month1To = DateAdd("m", 1, Month1 - Day(Date)) 

Month2 = DateAdd("m", -2, Date) 
Month2From = DateAdd("d", 1, Month2 - Day(Date)) 
Month2To = DateAdd("m", 1, Month2 - Day(Date)) 

Month3 = DateAdd("m", -3, Date) 
Month3From = DateAdd("d", 1, Month3 - Day(Date)) 
Month3To = DateAdd("m", 1, Month3 - Day(Date)) 

Month4 = DateAdd("m", -4, Date) 
Month4From = DateAdd("d", 1, Month4 - Day(Date)) 
Month4To = DateAdd("m", 1, Month4 - Day(Date)) 

Month5 = DateAdd("m", -5, Date) 
Month5From = DateAdd("d", 1, Month5 - Day(Date)) 
Month5To = DateAdd("m", 1, Month5 - Day(Date)) 

我要構建基於變量的SQL,但我不能,因爲變量Month5To被顯示爲比賽的第29,但有31天三月

任何人都可以幫忙嗎?

回答

0

爲什麼不改變你的查詢,以便對

WHERE MONTH(date)= @m AND YEAR(date) = @y 

過濾你也可以得到一個結果使用GROUP BY查詢

另外請注意,您的原始查詢將會失敗應該日期值設置的所有結果有任何時間附加。

即:2012-07-31 09:15是不是 '2012-07-01' 之間 '2012-07-31'

+0

OK,通過@m和@y你的意思是我創建變量在VB腳本? – 2012-08-06 09:28:41

+0

我的意思是,理想情況下,參數化SQL中的參數(請參閱http://stackoverflow.com/questions/770419/how-to-make-a-parametrized-sql-query-on-classic-asp)但是,值爲月和年。 – podiluska 2012-08-06 09:30:10

+0

日期列沒有時間。不確定參數查詢,我只有RO訪問服務器,所以不認爲這會工作?我現在修改了它,以便按照建議在SQL Server SQL中使用MONTH和YEAR函數。謝謝 – 2012-08-06 09:57:38

相關問題