日期:2014-05-18  浏览次数:20563 次

求年月的问题
gzyear       char(4)     --存放4位的年份   如2007   1997
gzmonth     char(2)     --存放月份             如7         12

如何根据从表中取出gzmonth的值+1或-1呢?

假如取出gzyear   ,gzmonth的值为   2007   ,8

那么   gzmonth+1   即   8+1   =   9     ,gzyear   仍为   2007

如果   取出gzyear   ,gzmonth的值为   2007   ,12

那么   gzmonth+1   即   12+1   =   1     ,gzyear   则改为   2008

减1类同上面.

1\这样如何写语句呢?
2\另外要正确排序   order   by   gzyear   ,gzmonth(这样写不对,因为gzmonth中10是排在2的前面)应该如何写呢?




------解决方案--------------------
declare @a char(4)
declare @b char(2) --存放月份 如7 12

select @a= '2007 ',@b= '12 '

select @a=ltrim(year(dateadd(mm,1,@a+ '- '+@b+ '- '+ '01 '))),@b=ltrim(month(dateadd(mm,1,@a+ '- '+@b+ '- '+ '01 ')))
select @a,@b
------------------
order by gzyear,right( '0 '+gzmonth,2)