那你应该还有个字段表示年份的吧?假设年份和月份都为整数型。可以建个视图,在原表的基础上,用convert(datetime,convert(varchar,年份字段)+ convert(varchar,月份字段) + "-1") 生成个日期字段(都为当月1号)。再用SQL的日期函数筛选: where 日期字段 < dateadd(month,-1,getdate()) and 日期字段 > dateadd(month,-7,getdate())
SELECT * FROM 表名 WHERE 字段名 BETWEEN Month(DATEADD(month, -6, GETDATE())) AND Month(DATEADD(month, -1, GETDATE())) AND 字段名 BETWEEN year(DATEADD(month, -6, GETDATE())) AND year(DATEADD(month, -1, GETDATE()))
int[6] mon
for(int i=0;i<6;i++)
{
if(month-i<=0)
{
mon[i]=month-i+12;
}
else
{
mon[i]=month-i;
}
}
这样行不行?
我是要写 存储过程呢!
我在描述一下
要写存储过程数据库中有个字段MONTH 放的月份(1-12整数) YEAR 放年(2003...) 我现在要查比当前月 前六个月的月份 有谁知道怎么查吗? 就是说 现在是2008年2月 那我就要查出 1(2007年) 12 (2008年) 11(2008年) 10(2008年) 9 (2008年) 8(2008年) 月的所有记录
我新手! 光贴一句话 我不明白
思路:
先把你的Month和Year整合 转换成日期型
然后用dateadd
WHERE 字段名 BETWEEN
Month(DATEADD(month, -6, GETDATE()))
AND
Month(DATEADD(month, -1, GETDATE()))
AND
字段名 BETWEEN
year(DATEADD(month, -6, GETDATE()))
AND
year(DATEADD(month, -1, GETDATE()))