转载高人的 SQL 语句

 

 
  
  1. DECLARE @Year nvarchar(4)  
  2. DECLARE @YearMonth nvarchar(7) --月份  
  3. DECLARE @strTop nvarchar(200)  
  4. DECLARE @ForI INT,@ForYear INT ,@MaxDay INT 
  5. DECLARE @RowX INT --行位置  
  6. DECLARE @strWeekDayList nvarchar(20)  
  7. DECLARE @strPrint nvarchar(300)  
  8. -- ======================================  
  9. SET @Year='2012' --请在这里输入年份  
  10. -- ======================================  
  11. SET @strTop= '日'+char(9)+'一'+char(9)+'二' +char(9)+'三'++char(9)+'四'++char(9)+'五'++char(9)+'六' +char(13)+  
  12. '──────────────'                               
  13. SET @strWeekDayList='日一二三四五六' 
  14. SET @ForYear=1  
  15. WHILE @ForYear<=12 --1月份至12月份  
  16. BEGIN 
  17.     SET @YearMonth=@Year + '-' +CAST( @ForYear AS nvarchar(2))  
  18.     SET @MaxDay=DAY(DATEADD(Day,-1,DATEADD(Month,1,@YearMonth+'-01')))  
  19.     SET @RowX=CHARINDEX(RIGHT(DATENAME(WeekDay,@YearMonth+'-01'),1),@strWeekDayList)-1  
  20.     SET @strPrint='' 
  21.     SET @ForI=1  
  22.     WHILE @ForI<=@RowX --构造1号的位置  
  23.     BEGIN 
  24.         SET @strPrint=@strPrint+CHAR(9)  
  25.         SET @ForI=@ForI+1  
  26.     END 
  27.     SET @ForI=1  
  28.     WHILE @ForI<=@MaxDay --构造2号到月底的位置  
  29.     BEGIN 
  30.         SET @strPrint=@strPrint+CAST(@ForI AS nvarchar(2)) +Char(9)  
  31.         SET @RowX=@RowX+1  
  32.         SET @ForI=@ForI+1  
  33.         IF (@RowX%7=0)  
  34.         BEGIN 
  35.             SET @RowX=0  
  36.             SET @strPrint=@strPrint+CHAR(13)  
  37.         END 
  38.     END 
  39.     SET @ForYear=@ForYear+1  
  40. -- 打印输出一个月的结果  
  41.     PRINT '━━━━━━━━━━━━━━'                                     
  42.     PRINT +Char(9)++Char(9)+' '+@YearMonth+CHAR(10)  
  43.     PRINT @strTop  
  44.     PRINT @strPrint +CHAR(10)  
  45. END