生成两个时间之间的所有日期

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生成两个时间之间的所有日期相关的知识,希望对你有一定的参考价值。

--改写liangCK的部分代码为函数
--创建函数
create function generateTime
(
    @begin_date datetime,
    @end_date datetime
)
returns @t table(date datetime)
as
begin
    with maco as
    (
       select @begin_date AS date
       union all
       select date+1 from maco
       where date+1 <=@end_date
    )
    insert into @t
    select * from maco option(maxrecursion 0);
    return
end
 
Go
--测试示例
select * from dbo.generateTime(2009-01-01,2009-01-10)
 
--运行结果
/*
date
-----------------------
2009-01-01 00:00:00.000
2009-01-02 00:00:00.000
2009-01-03 00:00:00.000
2009-01-04 00:00:00.000
2009-01-05 00:00:00.000
2009-01-06 00:00:00.000
2009-01-07 00:00:00.000
2009-01-08 00:00:00.000
2009-01-09 00:00:00.000
2009-01-10 00:00:00.000
*/
 
 
 
go
--第二版
--创建函数
create function generateTimeV2
(
    @begin_date datetime,
    @end_date datetime
)
returns @t table(date datetime)
as
begin
    insert into @t
    select dateadd(dd,number,@begin_date) AS date
    from master..spt_values
    where type=p and dateadd(dd,number,@begin_date)<=@end_date
    return
end
 
--测试示例
select * from dbo.generateTimeV2(2009-01-01,2009-01-10)
--运行结果
/*
date
-----------------------
2009-01-01 00:00:00.000
2009-01-02 00:00:00.000
2009-01-03 00:00:00.000
2009-01-04 00:00:00.000
2009-01-05 00:00:00.000
2009-01-06 00:00:00.000
2009-01-07 00:00:00.000
2009-01-08 00:00:00.000
2009-01-09 00:00:00.000
2009-01-10 00:00:00.000
 
(10 row(s) affected)
*/

 

以上是关于生成两个时间之间的所有日期的主要内容,如果未能解决你的问题,请参考以下文章

Java 8 LocalDateTime - 如何获取两个日期之间的所有时间

自动生成两个日期之间所有的年月

在pyspark数据框中的两个日期之间生成每月时间戳

重工作的Asynctask替代方案(在UI中添加大量片段)

生成介于开始日期和结束日期之间的日期

打印两个日期之间的所有日期[重复]