zoukankan      html  css  js  c++  java
  • Sql Server 生成连续时间段

    方法一:

    declare @StartTime datetime 
    declare @EndTime datetime
    set @StartTime ='2019-02-1 00:00'
    set @EndTime ='2019-02-19 00:00'
    select dateadd(DAY,number,@StartTime) as dt
     from master.dbo.spt_values  where type ='P'
    and number <=DATEDIFF(DAY, @StartTime, @EndTime)

    原理:利用select number from master.dbo.spt_values  where type ='P' 的0-2047个常量生成时间段,缺点是只能生成2048条数据

     关于spt_values可以参考http://www.cnblogs.com/cjm123/p/8295844.html

    方法二:

    select Convert(varchar(20),dateadd(day,(row_number() over(order by getdate()) - 1),'2019-02-1 00:00'),23) as Date 
    from sysobjects

    原理:利用row_number给getdate()排序,数据查询时,每行数据计算的getdate()越来越大,就会排列出从1,2,3...这样的序列。生成的数据列行数和sysobjects的行数一样,也可以使用sysobjects以外的表,但必须有数据,一般使用sysobjects,因为sysobjects记录系统信息,肯定会有数据的。

    如果需要生成年、月、小时数据把day换成对应的year、month、hour

  • 相关阅读:
    table 如何不越过父级div
    sqlite3_column_type 与 SQLITE_NULL的区别
    lua 协程的理解
    linux 信号
    linux 查看文件夹大小
    linux 僵屍进程
    软件架构的理解
    jquery正则表达式
    linux C遍历目录下文件
    linux 进程间同步互斥
  • 原文地址:https://www.cnblogs.com/lidaying5/p/10402794.html
Copyright © 2011-2022 走看看