zoukankan      html  css  js  c++  java
  • SqlServer 一些跟时间相关的东西

    --自动补全时间(number的范围 0~2047)

    SELECT CONVERT (VARCHAR (10),dateadd(d, number, GETDATE()),23) AS rq
    FROM master..spt_values
    WHERE type = 'p' AND number between 1 and 365

    --按照时间段划分成每个月的时间段


    declare @Init_Data table
    (
    ID INT IDENTITY(1,1) NOT NULL,
    TypeID bigint NULL,
    dtEnd datetime NULL,
    dtStart datetime NULL
    );
    insert into @Init_Data(TypeID,dtStart,dtEnd)
    select 1,'2020-01-04 02:00:00','2020-04-24 22:05:00'
    union all
    select 2,'2020-03-04 01:00:00','2020-04-21 22:25:00'
    declare @TEMP_Data table
    (
    ID INT IDENTITY(1,1) NOT NULL,
    TypeID bigint NULL,
    BeforeDate datetime NULL,
    AfterDate datetime NULL
    );
    with T
    as
    (
    select A.TypeID,A.dtStart,isnull(A.dtend,getdate())dtEnd ,A.dtStart AS beforeStart,
    (case when A.dtEnd is null then dateadd(month,1,convert(char(07),LEFT(CONVERT(varchar(19),A.dtStart,120),7),120)+'-01')
    when A.dtEnd is not null and MONTH(A.dtStart)=MONTH(A.dtEnd) and Year(A.dtStart)=Year(A.dtEnd) then A.dtEnd
    else dateadd(month,1,convert(char(07),LEFT(CONVERT(varchar(19),A.dtStart,120),7),120)+'-01') end) as afterDtAudit,
    MONTH(isnull(A.dtEnd,getdate()))-MONTH(A.dtStart)+12*(Year(isnull(A.dtEnd,getdate()))-Year(A.dtStart)) AS MonthS
    from @Init_Data A
    union all
    select T.TypeID,T.dtStart, T.dtend,T.afterDtAudit AS beforeStart,
    (case when MonthS=1 then T.dtend else dateadd(month,1,T.afterDtAudit) end) AS afterDtAudit,MonthS-1 AS MonthS
    from T where MonthS>0 and Months is not null
    )
    insert into @TEMP_Data(TypeID,BeforeDate,AfterDate)
    select TypeID, beforeStart, min(afterDtAudit)afterDtAudit from(
    select TypeID, min(T.beforeStart) beforeStart,T.afterDtAudit
    from T
    group by TypeID,T.afterDtAudit)a
    group by TypeID,beforeStart

    select * from @TEMP_Data order by TypeID,BeforeDate ;

  • 相关阅读:
    Android开发使用Glide获取图片背景色淡绿色解决办法
    Android 获取 View 宽高的常用正确方式,避免为零
    Android之自定义View来接收输入法输入的内容
    FileProvider使用详解(拍照、安装APP、共享文件)
    简明 homebrew
    更优雅地使用命令行
    一篇长文说 git 基础
    chrome 浏览器的使用技巧
    前端学命令行
    cocos 碰撞系统
  • 原文地址:https://www.cnblogs.com/NinaMua/p/14132376.html
Copyright © 2011-2022 走看看