惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Blog — PlanetScale
Blog — PlanetScale
爱范儿
爱范儿
MongoDB | Blog
MongoDB | Blog
腾讯CDC
aimingoo的专栏
aimingoo的专栏
月光博客
月光博客
Engineering at Meta
Engineering at Meta
C
Check Point Blog
N
Netflix TechBlog - Medium
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
L
LangChain Blog
大猫的无限游戏
大猫的无限游戏
IT之家
IT之家
Microsoft Security Blog
Microsoft Security Blog
GbyAI
GbyAI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
T
The Blog of Author Tim Ferriss
Last Week in AI
Last Week in AI
B
Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
人人都是产品经理
人人都是产品经理
博客园 - 叶小钗
WordPress大学
WordPress大学
博客园 - 司徒正美

博客园 - 灰太狼2号

用Nginx+Lua+Redis给百度鹰眼API服务搭建缓存服务中间件(记录过程) 开源.net微博组建维护团队 封装SQL2005数据库操作的Framework [转]Team Foundation Server 2008 單一伺服器簡易安裝說明 (Win2003+SQL2005+TFS2008) CHFMake代码生成器Beta版下载 Huntor中国CRM评估报告连载(二) Huntor中国CRM评估报告连载(一) 汉拓中国CRM评估报告简介 子曾经曰过:先有司,赦小过,举贤才 山寨版Windows.Forms用户控件 山寨版WCF 浅谈WebControl中的ScriptManager与ClientScriptManager的区别(附上一个弹出多选的控件源代码) 互联网公司如何有效执行流程的心得 自定义方法的C#代码生成器 [导入].Net CLR Hosting原理及实践 [导入]CLR引擎初始化分析 [导入]CLR探索系列:Server and Workstation Garbage Collection探索(垃圾回收系列) [导入]CLR探索系列:GC 中的Card table和Brick Table(垃圾回收系列) [导入]CLR探索系列:GC Heap架构及其实现(垃圾回收系列)
通过SQL语句生成日历表格
灰太狼2号 · 2009-06-25 · via 博客园 - 灰太狼2号

你还在通过Asp.Net控件或者服务器端语句处理来生成日历表格吗?

或者你还在用客户段javascript来生成日历表格吗?

那么他们生成的表格是不是都是周日排在第一列?

请看我生成的下图:

9年2月份

9年6月份

9年7月份

只是通过一段简单的SQL语句(存储过程),传入时间,输出以星期一打头列的日历表格。

换成这个角度来处理,大家还会不会在C#后台为算出第几星期而伤脑筋?

O(∩_∩)O哈哈~

其实也没有什么,就是一段小小的存储过程,不就是T-SQL嘛,大牛就不要拍砖了。

不过对小虾来讲,确实是实用啊,贴首页了,我脸皮厚,砖头都拍不烂,不信你们试试~

 存储过程贴出如下:

Code
-- =============================================
--
 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