Sql server 如何添加本年度';SQL server的所有日期都是什么?
是否可以使用查询在MS Sql server中添加1月1日至12月31日之间的所有日期 如果有人以前做过,请引导我到正确的轨道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,
感谢使用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次插入。嗨,西蒙,我已经向你们两个投了赞成票。。。。。因为我只能标记一个答案,而你们都提供了正确的解决方案,所以我对标记答案感到困惑。。。所以我会等几天,谁将获得高得票将被标记为答案希望你们理解我理解,我认为这可以被认为是一种公平的行为。。。老实说,最好的解决方案是最后一个:)“添加所有日期”?你到底是什么意思?“加上所有的日期”?你到底是什么意思?