SQL Server 获取日历列表

需求:报表需要把未有数据的日期也显示出来。
需要一张日历表和数据表:日历表 left join 数据表,则可以实现。

问题是,日历表怎么生成呢?其实只需要有一张连续数字的表就可以生成日历表。

方案一:通过系统内部表 master…spt_values
方案二:自定义日历表

方案一:

SELECT
	CONVERT (VARCHAR (100),dateadd(d, number, GETDATE()  - 14),23) AS cad_date
FROM
	master.dbo.spt_values n
WHERE
	n.type = 'p'
AND n.number <= 14

方案二:通过select和union all 来 生成连续数字表,从而得出日期

		SELECT
		CONVERT (VARCHAR (100),dateadd(d, number, GETDATE()  - 14),23) AS cad_date
	FROM
		(SELECT d.number
	from (SELECT 1 as number UNION all SELECT 2 UNION all SELECT 3 UNION all SELECT 4 UNION all SELECT 5 
	UNION all SELECT 6 UNION all SELECT 7 UNION all SELECT 8 UNION all SELECT 9 UNION all SELECT 10 
	UNION all SELECT 11 UNION all SELECT 12 UNION all SELECT 13 UNION all SELECT 14)as d) n
	WHERE
 n.number <= 14
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值