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'

等等等等回到三月。

有没有办法做到这一点?我尝试执行以下 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查询在一个结果集中获取所有结果

另请注意,如果日期值附有任何时间,您的原始查询将失败。

即:2012-07-31 09:15 不在“2012-07-01”和“2012-07-31”之间

于 2012-08-06T09:27:01.030 回答