通过SQL语句生成日历表格
2009-06-25 19:32
645 查看
你还在通过Asp.Net控件或者服务器端语句处理来生成日历表格吗?
或者你还在用客户段javascript来生成日历表格吗?
那么他们生成的表格是不是都是周日排在第一列?
请看我生成的下图:
-- =============================================
-- Author: chf
-- Create date: 2009-06-25
-- Description: 传入时间,返回当前月份列表
-- =============================================
alter PROCEDURE GetMonthTable
(
@Date datetime
)
AS
BEGIN
DECLARE @Start DATETIME,@End DATETIME
DECLARE @Index INT
SET @Start = DATEADD(MONTH,DATEDIFF(MONTH,0,@Date),0)
SET @End = DATEADD(MONTH,1,@Start)
SET @Index = DATEDIFF(DAY,-1,@Start)%7 - 1;
SET @Start = DATEADD(mm,DATEDIFF(mm,0,@Date),0)
SET @End = DATEADD(mm,1,@Start) - 1
SET @Index= DATEDIFF(day,0,@Start)%7
;WITH temp(date,row,col) AS
(
SELECT date=1,row=@Index/7+1,col=@Index%7+1
UNION ALL
SELECT date=date+1,row=(@Index+date)/7+1,col=(@Index+date)%7+1
FROM temp
WHERE date <= DATEDIFF(DAY,@Start,@End)
)
SELECT ISNULL(CONVERT(CHAR(2),[1]),'') AS 一,
ISNULL(CONVERT(CHAR(2),[2]),'') AS 二,
ISNULL(CONVERT(CHAR(2),[3]),'') AS 三,
ISNULL(CONVERT(CHAR(2),[4]),'') AS 四,
ISNULL(CONVERT(CHAR(2),[5]),'') AS 五,
ISNULL(CONVERT(CHAR(2),[6]),'') AS 六,
ISNULL(CONVERT(CHAR(2),[7]),'') AS 日
FROM temp
PIVOT
(
MAX(date) FOR col IN ([1],[2],[3],[4],[5],[6],[7])
) AS B
END
GO
或者你还在用客户段javascript来生成日历表格吗?
那么他们生成的表格是不是都是周日排在第一列?
请看我生成的下图:
-- =============================================
-- Author: chf
-- Create date: 2009-06-25
-- Description: 传入时间,返回当前月份列表
-- =============================================
alter PROCEDURE GetMonthTable
(
@Date datetime
)
AS
BEGIN
DECLARE @Start DATETIME,@End DATETIME
DECLARE @Index INT
SET @Start = DATEADD(MONTH,DATEDIFF(MONTH,0,@Date),0)
SET @End = DATEADD(MONTH,1,@Start)
SET @Index = DATEDIFF(DAY,-1,@Start)%7 - 1;
SET @Start = DATEADD(mm,DATEDIFF(mm,0,@Date),0)
SET @End = DATEADD(mm,1,@Start) - 1
SET @Index= DATEDIFF(day,0,@Start)%7
;WITH temp(date,row,col) AS
(
SELECT date=1,row=@Index/7+1,col=@Index%7+1
UNION ALL
SELECT date=date+1,row=(@Index+date)/7+1,col=(@Index+date)%7+1
FROM temp
WHERE date <= DATEDIFF(DAY,@Start,@End)
)
SELECT ISNULL(CONVERT(CHAR(2),[1]),'') AS 一,
ISNULL(CONVERT(CHAR(2),[2]),'') AS 二,
ISNULL(CONVERT(CHAR(2),[3]),'') AS 三,
ISNULL(CONVERT(CHAR(2),[4]),'') AS 四,
ISNULL(CONVERT(CHAR(2),[5]),'') AS 五,
ISNULL(CONVERT(CHAR(2),[6]),'') AS 六,
ISNULL(CONVERT(CHAR(2),[7]),'') AS 日
FROM temp
PIVOT
(
MAX(date) FOR col IN ([1],[2],[3],[4],[5],[6],[7])
) AS B
END
GO
相关文章推荐
- 通过java反射实现对javabean生成各种sql语句
- 通过一个函数或sql语句,随机生成任意6个字母组成的字符
- 【分享】通过Excel生成批量SQL语句,处理大量数据的好办法
- mybaites 通过字段自动生成sql 语句
- 【分享】通过Excel生成批量SQL语句,处理大量数据的好办法
- 通过SQL语句或数据库,生成数据库模型PDM方法详解
- 通过Excel生成批量SQL语句,处理大量数据的好办法
- 通过excel生成SQL语句完成数据库操作
- Oracle SQL语句生成日历 connect by
- 通过反射+注解生成sql语句
- 通过java反射实现对javabean生成各种sql语句
- 通过sql语句limit标签生成java分页
- 生成日历的SQL语句
- 如何通过SQL语句生成long型的毫秒数
- 通过实体类生成 sql 建表语句
- 生成SQL语句字符串,通过存储过程执行
- Oracle SQL语句生成日历
- 通过读取excel文件生成sql语句
- PowerDesign通过SQL语句生成PDM文件
- 通过自定义注解反射生成SQL语句