zoukankan      html  css  js  c++  java
  • SQL Calendar Table

    --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(涂聚文)
  • 相关阅读:
    译文-浏览器下载图片的方式和时间点
    总结一下各种0.5px的线
    CSS3渐变效果工具
    [CSS]《CSS揭秘》第四章——视觉效果
    如何机制地回答浏览器兼容性问题
    如何更愉快地使用em —— 别说你懂CSS相对单位
    CSS学习(二):背景图片如何定位?
    React-简单通用的抛物线动画
    如何更愉快地使用rem —— 别说你懂CSS相对单位
    linuxC进程间通信的几种方式
  • 原文地址:https://www.cnblogs.com/geovindu/p/2144253.html
Copyright © 2011-2022 走看看