sql语句自动获取本年的所有日期列表 怎么写呀?

小白619 2020-04-24 04:09:46
各位大神,例如,今年是2020年,则能自动显示2020年的所有日期
2020-01-01
2020-01-02
2020-01-03
2020-01-04
2020-01-05
2020-01-06
2020-01-07
2020-01-08


如果是2021年,则获取2021年所有的日期
2021-01-01
2021-01-02
2021-01-03
2021-01-04
2021-01-05
2021-01-06
2021-01-07
2021-01-08

...全文
1390 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
小白619 2020-06-04
  • 打赏
  • 举报
回复
感谢各位大神,学习了
卖水果的net 版主 2020-04-29
  • 打赏
  • 举报
回复
引用 5 楼 吉普赛的歌 的回复:
[quote=引用 4 楼 卖水果的net 的回复:] [quote=引用 2 楼 吉普赛的歌 的回复:]
DECLARE @year INT
SET @year=2020
SELECT CAST(DATEADD(DAY,sv.number,LTRIM(@year)+'-01-01') AS DATE) AS d
FROM [master].dbo.spt_values AS sv 
WHERE sv.[type]='P'
	AND DATEADD(DAY,sv.number,LTRIM(@year)+'-01-01') 
		BETWEEN LTRIM(@year)+'-01-01' AND DATEADD(YEAR,1,LTRIM(@year)+'-01-01')-1
/*
2020-01-01

2020-12-31
*/
太长了,太长了。 [/quote] 7行代码而已嘛, 果版也来一个。[/quote] 我是说,你把 365 行数据都贴上来了,太长了。
吉普赛的歌 版主 2020-04-29
  • 打赏
  • 举报
回复
引用 4 楼 卖水果的net 的回复:
[quote=引用 2 楼 吉普赛的歌 的回复:]
DECLARE @year INT
SET @year=2020
SELECT CAST(DATEADD(DAY,sv.number,LTRIM(@year)+'-01-01') AS DATE) AS d
FROM [master].dbo.spt_values AS sv 
WHERE sv.[type]='P'
	AND DATEADD(DAY,sv.number,LTRIM(@year)+'-01-01') 
		BETWEEN LTRIM(@year)+'-01-01' AND DATEADD(YEAR,1,LTRIM(@year)+'-01-01')-1
/*
2020-01-01

2020-12-31
*/
太长了,太长了。 [/quote] 7行代码而已嘛, 果版也来一个。
_Asura 2020-04-29
  • 打赏
  • 举报
回复

declare @year nvarchar(4)='2020'
select dateadd(DAY,number, @year+'-01-01') from master..spt_values where type='p' and number between 0 and datediff(day,@year+'-01-01',@year+'-12-31')
吉普赛的歌 版主 2020-04-29
  • 打赏
  • 举报
回复
引用 6 楼 卖水果的net 的回复:
[quote=引用 5 楼 吉普赛的歌 的回复:] [quote=引用 4 楼 卖水果的net 的回复:] [quote=引用 2 楼 吉普赛的歌 的回复:]
DECLARE @year INT
SET @year=2020
SELECT CAST(DATEADD(DAY,sv.number,LTRIM(@year)+'-01-01') AS DATE) AS d
FROM [master].dbo.spt_values AS sv 
WHERE sv.[type]='P'
	AND DATEADD(DAY,sv.number,LTRIM(@year)+'-01-01') 
		BETWEEN LTRIM(@year)+'-01-01' AND DATEADD(YEAR,1,LTRIM(@year)+'-01-01')-1
/*
2020-01-01

2020-12-31
*/
太长了,太长了。 [/quote] 7行代码而已嘛, 果版也来一个。[/quote] 我是说,你把 365 行数据都贴上来了,太长了。 [/quote] 没办法, 怕人家不相信。
卖水果的net 版主 2020-04-28
  • 打赏
  • 举报
回复
引用 2 楼 吉普赛的歌 的回复:
DECLARE @year INT
SET @year=2020
SELECT CAST(DATEADD(DAY,sv.number,LTRIM(@year)+'-01-01') AS DATE) AS d
FROM [master].dbo.spt_values AS sv 
WHERE sv.[type]='P'
	AND DATEADD(DAY,sv.number,LTRIM(@year)+'-01-01') 
		BETWEEN LTRIM(@year)+'-01-01' AND DATEADD(YEAR,1,LTRIM(@year)+'-01-01')-1
/*
2020-01-01

2020-12-31
*/
太长了,太长了。
fatxinglee 2020-04-27
  • 打赏
  • 举报
回复
各路大神比拼语句,观摩学习了
吉普赛的歌 版主 2020-04-24
  • 打赏
  • 举报
回复
DECLARE @year INT
SET @year=2020
SELECT CAST(DATEADD(DAY,sv.number,LTRIM(@year)+'-01-01') AS DATE) AS d
FROM [master].dbo.spt_values AS sv 
WHERE sv.[type]='P'
	AND DATEADD(DAY,sv.number,LTRIM(@year)+'-01-01') 
		BETWEEN LTRIM(@year)+'-01-01' AND DATEADD(YEAR,1,LTRIM(@year)+'-01-01')-1
/*
2020-01-01
2020-01-02
2020-01-03
2020-01-04
2020-01-05
2020-01-06
2020-01-07
2020-01-08
2020-01-09
2020-01-10
2020-01-11
2020-01-12
2020-01-13
2020-01-14
2020-01-15
2020-01-16
2020-01-17
2020-01-18
2020-01-19
2020-01-20
2020-01-21
2020-01-22
2020-01-23
2020-01-24
2020-01-25
2020-01-26
2020-01-27
2020-01-28
2020-01-29
2020-01-30
2020-01-31
2020-02-01
2020-02-02
2020-02-03
2020-02-04
2020-02-05
2020-02-06
2020-02-07
2020-02-08
2020-02-09
2020-02-10
2020-02-11
2020-02-12
2020-02-13
2020-02-14
2020-02-15
2020-02-16
2020-02-17
2020-02-18
2020-02-19
2020-02-20
2020-02-21
2020-02-22
2020-02-23
2020-02-24
2020-02-25
2020-02-26
2020-02-27
2020-02-28
2020-02-29
2020-03-01
2020-03-02
2020-03-03
2020-03-04
2020-03-05
2020-03-06
2020-03-07
2020-03-08
2020-03-09
2020-03-10
2020-03-11
2020-03-12
2020-03-13
2020-03-14
2020-03-15
2020-03-16
2020-03-17
2020-03-18
2020-03-19
2020-03-20
2020-03-21
2020-03-22
2020-03-23
2020-03-24
2020-03-25
2020-03-26
2020-03-27
2020-03-28
2020-03-29
2020-03-30
2020-03-31
2020-04-01
2020-04-02
2020-04-03
2020-04-04
2020-04-05
2020-04-06
2020-04-07
2020-04-08
2020-04-09
2020-04-10
2020-04-11
2020-04-12
2020-04-13
2020-04-14
2020-04-15
2020-04-16
2020-04-17
2020-04-18
2020-04-19
2020-04-20
2020-04-21
2020-04-22
2020-04-23
2020-04-24
2020-04-25
2020-04-26
2020-04-27
2020-04-28
2020-04-29
2020-04-30
2020-05-01
2020-05-02
2020-05-03
2020-05-04
2020-05-05
2020-05-06
2020-05-07
2020-05-08
2020-05-09
2020-05-10
2020-05-11
2020-05-12
2020-05-13
2020-05-14
2020-05-15
2020-05-16
2020-05-17
2020-05-18
2020-05-19
2020-05-20
2020-05-21
2020-05-22
2020-05-23
2020-05-24
2020-05-25
2020-05-26
2020-05-27
2020-05-28
2020-05-29
2020-05-30
2020-05-31
2020-06-01
2020-06-02
2020-06-03
2020-06-04
2020-06-05
2020-06-06
2020-06-07
2020-06-08
2020-06-09
2020-06-10
2020-06-11
2020-06-12
2020-06-13
2020-06-14
2020-06-15
2020-06-16
2020-06-17
2020-06-18
2020-06-19
2020-06-20
2020-06-21
2020-06-22
2020-06-23
2020-06-24
2020-06-25
2020-06-26
2020-06-27
2020-06-28
2020-06-29
2020-06-30
2020-07-01
2020-07-02
2020-07-03
2020-07-04
2020-07-05
2020-07-06
2020-07-07
2020-07-08
2020-07-09
2020-07-10
2020-07-11
2020-07-12
2020-07-13
2020-07-14
2020-07-15
2020-07-16
2020-07-17
2020-07-18
2020-07-19
2020-07-20
2020-07-21
2020-07-22
2020-07-23
2020-07-24
2020-07-25
2020-07-26
2020-07-27
2020-07-28
2020-07-29
2020-07-30
2020-07-31
2020-08-01
2020-08-02
2020-08-03
2020-08-04
2020-08-05
2020-08-06
2020-08-07
2020-08-08
2020-08-09
2020-08-10
2020-08-11
2020-08-12
2020-08-13
2020-08-14
2020-08-15
2020-08-16
2020-08-17
2020-08-18
2020-08-19
2020-08-20
2020-08-21
2020-08-22
2020-08-23
2020-08-24
2020-08-25
2020-08-26
2020-08-27
2020-08-28
2020-08-29
2020-08-30
2020-08-31
2020-09-01
2020-09-02
2020-09-03
2020-09-04
2020-09-05
2020-09-06
2020-09-07
2020-09-08
2020-09-09
2020-09-10
2020-09-11
2020-09-12
2020-09-13
2020-09-14
2020-09-15
2020-09-16
2020-09-17
2020-09-18
2020-09-19
2020-09-20
2020-09-21
2020-09-22
2020-09-23
2020-09-24
2020-09-25
2020-09-26
2020-09-27
2020-09-28
2020-09-29
2020-09-30
2020-10-01
2020-10-02
2020-10-03
2020-10-04
2020-10-05
2020-10-06
2020-10-07
2020-10-08
2020-10-09
2020-10-10
2020-10-11
2020-10-12
2020-10-13
2020-10-14
2020-10-15
2020-10-16
2020-10-17
2020-10-18
2020-10-19
2020-10-20
2020-10-21
2020-10-22
2020-10-23
2020-10-24
2020-10-25
2020-10-26
2020-10-27
2020-10-28
2020-10-29
2020-10-30
2020-10-31
2020-11-01
2020-11-02
2020-11-03
2020-11-04
2020-11-05
2020-11-06
2020-11-07
2020-11-08
2020-11-09
2020-11-10
2020-11-11
2020-11-12
2020-11-13
2020-11-14
2020-11-15
2020-11-16
2020-11-17
2020-11-18
2020-11-19
2020-11-20
2020-11-21
2020-11-22
2020-11-23
2020-11-24
2020-11-25
2020-11-26
2020-11-27
2020-11-28
2020-11-29
2020-11-30
2020-12-01
2020-12-02
2020-12-03
2020-12-04
2020-12-05
2020-12-06
2020-12-07
2020-12-08
2020-12-09
2020-12-10
2020-12-11
2020-12-12
2020-12-13
2020-12-14
2020-12-15
2020-12-16
2020-12-17
2020-12-18
2020-12-19
2020-12-20
2020-12-21
2020-12-22
2020-12-23
2020-12-24
2020-12-25
2020-12-26
2020-12-27
2020-12-28
2020-12-29
2020-12-30
2020-12-31
*/
Hello World, 2020-04-24
  • 打赏
  • 举报
回复

DECLARE @year INT=2021;
WITH t AS (SELECT CAST( CAST(@year AS VARCHAR(4)) + '-1-1' AS DATE) AS Dt
UNION ALL SELECT DATEADD(DAY,1, t.Dt) FROM t WHERE t.Dt<CAST(@year AS VARCHAR(4)) + '-12-31')
SELECT * FROM t OPTION(MAXRECURSION 366)

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧