SQL Calendar Table
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 | --SQL Server 2000 -----Calendar Table Geovin Du 涂聚文 declare @start datetime, @ end datetime set @start = '2006-01-01' set @ end = '2006-05-02' declare @no_of_Days int set @no_of_days = datediff(dd,@start,@ end ) + 1 set rowcount @no_of_days select identity( int ,0,1) as dy into # temp from sysobjects a, sysobjects b set rowcount 0 select dateadd(dd,dy,@start) as [days] from # temp drop table # temp -- ---SQL Server 2005 ---Calendar Table WITH CTE_DatesTable AS ( SELECT CAST ( '20090601' as datetime) AS [ date ] UNION ALL SELECT DATEADD(dd, 1, [ date ]) FROM CTE_DatesTable WHERE DATEADD(dd, 1, [ date ]) <= '20090630' ) SELECT [ date ] FROM CTE_DatesTable OPTION (MAXRECURSION 0); GO ---創造日曆函數 Geovin Du 涂聚文 CREATE FUNCTION [dbo].[DateTable] ( @FirstDate datetime, @LastDate datetime ) RETURNS @datetable TABLE ( [ date ] datetime ) AS BEGIN SELECT @FirstDate = DATEADD(dd, 0, DATEDIFF(dd, 0, @FirstDate)); SELECT @LastDate = DATEADD(dd, 0, DATEDIFF(dd, 0, @LastDate)); WITH CTE_DatesTable AS ( SELECT @FirstDate AS [ date ] UNION ALL SELECT DATEADD(dd, 1, [ date ]) FROM CTE_DatesTable WHERE DATEADD(dd, 1, [ date ]) <= @LastDate ) INSERT INTO @datetable ([ date ]) SELECT [ date ] FROM CTE_DatesTable OPTION (MAXRECURSION 0) RETURN END GO ---創造日曆函數 CREATE FUNCTION [dbo].[DatesTable] ( @FirstDate smalldatetime, @LastDate smalldatetime ) RETURNS @datetable TABLE ( [ date ] smalldatetime ) AS BEGIN WITH CTE_DatesTable AS ( SELECT @FirstDate AS [ date ] UNION ALL SELECT DATEADD(dd, 1, [ date ]) FROM CTE_DatesTable WHERE DATEADD(dd, 1, [ date ]) <= @LastDate ) INSERT INTO @datetable ([ date ]) SELECT [ date ] FROM CTE_DatesTable OPTION (MAXRECURSION 0); RETURN ; END GO --測試 SELECT [ date ] FROM [dbo].[DateTable](GETDATE(), DATEADD(dd,5,GETDATE())) GO SELECT [ date ] FROM [dbo].[DatesTable](GETDATE(), DATEADD(dd,5,GETDATE())) GO --- create table SQLDatesTable ( id int identity(1,1) not null , [ date ] datetime not null ) -- insert into SQLDatesTable ([ date ]) select [ date ] from [dbo].[DateTable]( '20080101' , '20081231' ) -- Or declare @i int = 0, @ date datetime = '20090101' while @i <= 100 begin insert into SQLDatesTable ([ date ]) values (dateadd(dd,@i,@ date )) set @i = @i + 1 end select * from SQLDatesTable |
哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
2009-08-18 浮动层图片鼠标指针移到自动放大