SQL 绘画日历

来源:互联网 发布:直销软件下载 编辑:程序博客网 时间:2024/04/30 22:53
 今日周末没事就这脚本玩玩
脚本:

/*
功能:绘画日历
设计:OK_008
时间:2006-05
*/
DECLARE @Year nvarchar(4)
DECLARE @YearMonth nvarchar(7) --月份
DECLARE @strTop nvarchar(200)
DECLARE @ForI INT,@ForYear INT ,@MaxDay INT
DECLARE @RowX INT --行位置
DECLARE @strWeekDayList nvarchar(20)
DECLARE @strPrint nvarchar(300)

-- ======================================
SET @Year='2006' --请在这里输入年份
-- ======================================
SET @strTop= '日'+char(9)+'一'+char(9)+'二' +char(9)+'三'++char(9)+'四'++char(9)+'五'++char(9)+'六' +char(13)+
      '───────────────────────────'
SET @strWeekDayList='日一二三四五六'
SET @ForYear=1
WHILE @ForYear<=12  --1月份至12月份
 BEGIN
 SET @YearMonth=@Year + '-' +CAST( @ForYear AS nvarchar(2))
 SET @MaxDay=DAY(DATEADD(Day,-1,DATEADD(Month,1,@YearMonth+'-01')))
 SET @RowX=CHARINDEX(RIGHT(DATENAME(WeekDay,@YearMonth+'-01'),1),@strWeekDayList)-1
 SET @strPrint=''
 SET @ForI=1
 WHILE @ForI<=@RowX --构造1号的位置
      BEGIN
  SET @strPrint=@strPrint+CHAR(9)
  SET @ForI=@ForI+1
      END
 SET @ForI=1
 WHILE @ForI<=@MaxDay --构造2号到月底的位置
      BEGIN
  SET @strPrint=@strPrint+CAST(@ForI AS nvarchar(2)) +Char(9) 
  SET @RowX=@RowX+1
  SET @ForI=@ForI+1
  IF (@RowX%7=0)
     BEGIN
   SET @RowX=0
   SET @strPrint=@strPrint+CHAR(13)
       END
    END
 SET @ForYear=@ForYear+1
 -- 打印输出一个月的结果
 PRINT '━━━━━━━━━━━━━━━━━━━━━━━━━━━'
 PRINT +Char(9)++Char(9)+'    '+@YearMonth+CHAR(10)
 PRINT @strTop
 PRINT @strPrint +CHAR(10)
  END

 

运行结果:

结果:
━━━━━━━━━━━━━━━━━━━━━━━━━━━
                            2006-1
日    一      二      三      四     五     六
───────────────────────────
1     2       3       4        5      6       7 
8     9      10     11     12    13     14 
15   16    17     18     19    20      21 
22   23    24     25     26    27      28 
29   30    31 
━━━━━━━━━━━━━━━━━━━━━━━━━━━

.............