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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM