Sql server 如何添加本年度';SQL server的所有日期都是什么?

Sql server 如何添加本年度';SQL server的所有日期都是什么?,sql-server,Sql Server,是否可以使用查询在MS Sql server中添加1月1日至12月31日之间的所有日期 如果有人以前做过,请引导我到正确的轨道 感谢使用loop,我们可以实现这一点 Declare @date table(d datetime) Declare @d datetime, @d1 datetime, @d2 datetime Declare @inc INT set @d1='20150101' set @d2='20151231' Set @inc = DATEDIFF(D, @d1,

是否可以使用查询在MS Sql server中添加1月1日至12月31日之间的所有日期

如果有人以前做过,请引导我到正确的轨道


感谢使用loop,我们可以实现这一点

Declare @date table(d datetime)
Declare @d datetime, @d1 datetime, @d2 datetime
Declare  @inc INT

set @d1='20150101'
set @d2='20151231'


Set @inc = DATEDIFF(D, @d1, @d2)

Set @d = @d1


While @d<=@d2
Begin
Insert into @date values (@d)
set @d=@d+1

End
Select d as DateCol from @date
Declare@date表(d datetime)
声明@d datetime、@d1 datetime、@d2 datetime
声明@inc INT
设置为@d1='20150101'
设置为@d2='20151231'
Set@inc=DATEDIFF(D、@d1、@d2)
设置@d=@d1

当@d使用loop时,我们可以实现这一点

Declare @date table(d datetime)
Declare @d datetime, @d1 datetime, @d2 datetime
Declare  @inc INT

set @d1='20150101'
set @d2='20151231'


Set @inc = DATEDIFF(D, @d1, @d2)

Set @d = @d1


While @d<=@d2
Begin
Insert into @date values (@d)
set @d=@d+1

End
Select d as DateCol from @date
Declare@date表(d datetime)
声明@d datetime、@d1 datetime、@d2 datetime
声明@inc INT
设置为@d1='20150101'
设置为@d2='20151231'
Set@inc=DATEDIFF(D、@d1、@d2)
设置@d=@d1
而@d
声明@dt日期
设置@dt='2015-01-01'
而@dt<'2016-01-01'
开始
选择@dt
--插入。。。。。
SET@dt=DATEADD(第1天,@dt)
结束
当然,这取决于您的表结构

DECLARE@dt Date
设置@dt='2015-01-01'
而@dt<'2016-01-01'
开始
选择@dt
--插入。。。。。
SET@dt=DATEADD(第1天,@dt)
结束

当然,这取决于您的表结构

这应该可以做到:

DECLARE @year int = 2015

;WITH N(N)AS 
(SELECT 1 FROM(VALUES(1),(1),(1),(1),(1),(1),(1),(1),(1),(1))M(N)),
tally(N)AS(SELECT ROW_NUMBER()OVER(ORDER BY N.N)-1 FROM N,N a,N b,N c,N d,N e,N f)
SELECT top (datediff(d, cast(@year as char(4)), cast(@year + 1 as char(4)))) 
    CAST(DATEADD(d, N, cast(@year as char(4))) as date)
FROM tally
结果:

2015-01-01
2015-01-02
..
..
2015-12-31

这应该可以做到:

DECLARE @year int = 2015

;WITH N(N)AS 
(SELECT 1 FROM(VALUES(1),(1),(1),(1),(1),(1),(1),(1),(1),(1))M(N)),
tally(N)AS(SELECT ROW_NUMBER()OVER(ORDER BY N.N)-1 FROM N,N a,N b,N c,N d,N e,N f)
SELECT top (datediff(d, cast(@year as char(4)), cast(@year + 1 as char(4)))) 
    CAST(DATEADD(d, N, cast(@year as char(4))) as date)
FROM tally
结果:

2015-01-01
2015-01-02
..
..
2015-12-31

谢谢mohan和simone,你的解决方案会成功的。你们都为我的需求提供了正确的解决方案。不客气。。。您可以向上投票工作解决方案和/或选择答案在表中逐行插入无效。因为它是每年一次,我怀疑它会有多大的不同。但是像这样的问题只会导致1次插入。嗨,西蒙,我已经向你们两个投了赞成票。。。。。因为我只能标记一个答案,而你们都提供了正确的解决方案,所以我对标记答案感到困惑。。。所以我会等几天,谁将获得高得票将被标记为答案希望你们理解我理解,我认为这可以被认为是一种公平的行为。。。老实说,最好的解决方案是最后一个:)谢谢mohan和simone,你的解决方案会成功的。你们都为我的需求提供了正确的解决方案。不客气。。。您可以向上投票工作解决方案和/或选择答案在表中逐行插入无效。因为它是每年一次,我怀疑它会有多大的不同。但是像这样的问题只会导致1次插入。嗨,西蒙,我已经向你们两个投了赞成票。。。。。因为我只能标记一个答案,而你们都提供了正确的解决方案,所以我对标记答案感到困惑。。。所以我会等几天,谁将获得高得票将被标记为答案希望你们理解我理解,我认为这可以被认为是一种公平的行为。。。老实说,最好的解决方案是最后一个:)“添加所有日期”?你到底是什么意思?“加上所有的日期”?你到底是什么意思?