生成日历的SQL语句

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='2009' --请在这里输入年份
--
======================================
--
设置日历上边的标题格式
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')))
--找出1号的开始位置
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

━━━━━━━━━━━━━━━━━━━━━━━━━━━
2009-1

日一二三四五六
───────────────────────────
123
45678910
11121314151617
18192021222324
25262728293031
━━━━━━━━━━━━━━━━━━━━━━━━━━━
2009-2

日一二三四五六
───────────────────────────
1234567
891011121314
15161718192021
22232425262728
━━━━━━━━━━━━━━━━━━━━━━━━━━━
2009-3

日一二三四五六
───────────────────────────
1234567
891011121314
15161718192021
22232425262728
293031

━━━━━━━━━━━━━━━━━━━━━━━━━━━
2009-4

日一二三四五六
───────────────────────────
1234
567891011
12131415161718
19202122232425
2627282930

━━━━━━━━━━━━━━━━━━━━━━━━━━━
2009-5

日一二三四五六
───────────────────────────
12
3456789
10111213141516
17181920212223
24252627282930
31

━━━━━━━━━━━━━━━━━━━━━━━━━━━
2009-6

日一二三四五六
───────────────────────────
123456
78910111213
14151617181920
21222324252627
282930

━━━━━━━━━━━━━━━━━━━━━━━━━━━
2009-7

日一二三四五六
───────────────────────────
1234
567891011
12131415161718
19202122232425
262728293031

━━━━━━━━━━━━━━━━━━━━━━━━━━━
2009-8

日一二三四五六
───────────────────────────
1
2345678
9101112131415
16171819202122
23242526272829
3031

━━━━━━━━━━━━━━━━━━━━━━━━━━━
2009-9

日一二三四五六
───────────────────────────
12345
6789101112
13141516171819
20212223242526
27282930

━━━━━━━━━━━━━━━━━━━━━━━━━━━
2009-10

日一二三四五六
───────────────────────────
123
45678910
11121314151617
18192021222324
25262728293031
━━━━━━━━━━━━━━━━━━━━━━━━━━━
2009-11

日一二三四五六
───────────────────────────
1234567
891011121314
15161718192021
22232425262728
2930

━━━━━━━━━━━━━━━━━━━━━━━━━━━
2009-12

日一二三四五六
───────────────────────────
12345
6789101112
13141516171819
20212223242526
2728293031

你可能感兴趣的:(sql)