SQLServer存储过程

qq_51088701 2021-04-21 03:33:42


写一个存储过程显示成这一个表 从任意时间到现在的时间 显示这些列 怎么写啊 急急急!!!
...全文
47 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_51088701 2021-04-21
  • 打赏
  • 举报
回复
引用 1 楼 文盲老顾 的回复:
日期差小于2048

declare @date date

set @date='2016-1-1'

--select DATEDIFF(d,@date,getdate())

select *,年份名称+月份名称 as 年月名称,substring(convert(varchar,日期,112),1,6) as 年月序号 
from (
	select DATEADD(d,number,@date) as 日期
	from master..spt_values 
	where type='p' and number<=DATEDIFF(d,@date,getdate())
) a
cross apply (
	select 'Y'+CONVERT(varchar,YEAR(日期)) as 年份名称
		,YEAR(日期) as 年份序号
		,'M'+CONVERT(varchar,MONTH(日期)) as 月份名称
		,MONTH(日期) as 月份序号
) o
日期差大于2048
declare @date date,@diff int,@l int

set @date='2010-1-1'

select @diff = DATEDIFF(d,@date,getdate())


select number 
into #t
from master..spt_values 
where type='p'

while (select COUNT(0) from #t)<@diff
	begin
		select @l = COUNT(0) from #t

		insert into #t
		select number+@l
		from master..spt_values 
		where type='p'
	end


select *,年份名称+月份名称 as 年月名称,substring(convert(varchar,日期,112),1,6) as 年月序号 
from (
	select DATEADD(d,number,@date) as 日期
	from #t 
	where number<=@diff
) a
cross apply (
	select 'Y'+CONVERT(varchar,YEAR(日期)) as 年份名称
		,YEAR(日期) as 年份序号
		,'M'+CONVERT(varchar,MONTH(日期)) as 月份名称
		,MONTH(日期) as 月份序号
) o
order by 1

drop table #t
谢谢大佬
文盲老顾 2021-04-21
  • 打赏
  • 举报
回复
日期差小于2048

declare @date date

set @date='2016-1-1'

--select DATEDIFF(d,@date,getdate())

select *,年份名称+月份名称 as 年月名称,substring(convert(varchar,日期,112),1,6) as 年月序号 
from (
	select DATEADD(d,number,@date) as 日期
	from master..spt_values 
	where type='p' and number<=DATEDIFF(d,@date,getdate())
) a
cross apply (
	select 'Y'+CONVERT(varchar,YEAR(日期)) as 年份名称
		,YEAR(日期) as 年份序号
		,'M'+CONVERT(varchar,MONTH(日期)) as 月份名称
		,MONTH(日期) as 月份序号
) o
日期差大于2048
declare @date date,@diff int,@l int

set @date='2010-1-1'

select @diff = DATEDIFF(d,@date,getdate())


select number 
into #t
from master..spt_values 
where type='p'

while (select COUNT(0) from #t)<@diff
	begin
		select @l = COUNT(0) from #t

		insert into #t
		select number+@l
		from master..spt_values 
		where type='p'
	end


select *,年份名称+月份名称 as 年月名称,substring(convert(varchar,日期,112),1,6) as 年月序号 
from (
	select DATEADD(d,number,@date) as 日期
	from #t 
	where number<=@diff
) a
cross apply (
	select 'Y'+CONVERT(varchar,YEAR(日期)) as 年份名称
		,YEAR(日期) as 年份序号
		,'M'+CONVERT(varchar,MONTH(日期)) as 月份名称
		,MONTH(日期) as 月份序号
) o
order by 1

drop table #t

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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