0

SQLサーバーにリンクされたASPページがあります。基本的に、特定の日付の間のすべてのレコードを抽出するクエリが必要です。過去6か月の月次内訳が必要です。

つまり、今月は8月(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がMatchの29日として表示されているため、できませんが、3月は31日です。

誰か助けてもらえますか?

4

1 に答える 1

0

クエリを変更してフィルターを適用しない理由

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

GROUP BYクエリを使用して、1 つの結果セットですべての結果を取得することもできます

また、日付の値に時間が含まれていると、元のクエリは失敗することに注意してください。

例: 2012-07-31 09:15 は '2012-07-01' と '2012-07-31' の間にありません

于 2012-08-06T09:27:01.030 に答える