在SQL中创建存储过程创建日期

在SQL中创建存储过程创建日期,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,我需要在SQL Server中创建一个存储过程,它将为我创建dim date 该过程将开始和结束日期作为值,并填充日期 我需要的专栏: 日期代码为整数 日期名称为日期 月份为整数 四分之一为整数 年份为整数 假日为nvarchar/integer(我用我的假日表填充它) 作为nvarchar的一周中的一天 您已经尝试过什么?你可以在这里查看:我已经读过了,但无法理解和定制我需要的代码哇!很多TNX!!!!!!工作完美。下面的问题:如果我想根据我拥有的假日表填充假日列,我需要如何修改它?您可以使

我需要在SQL Server中创建一个存储过程,它将为我创建dim date

该过程将开始和结束日期作为值,并填充日期

我需要的专栏:

  • 日期代码为整数
  • 日期名称为日期
  • 月份为整数
  • 四分之一为整数
  • 年份为整数
  • 假日为nvarchar/integer(我用我的假日表填充它)
  • 作为nvarchar的一周中的一天

您已经尝试过什么?你可以在这里查看:我已经读过了,但无法理解和定制我需要的代码哇!很多TNX!!!!!!工作完美。下面的问题:如果我想根据我拥有的假日表填充假日列,我需要如何修改它?您可以使用左键连接到主查询并从您已连接的表填充假日列
CREATE or ALTER PROCEDURE sp_date(@start_date date, @end_date date)
AS

BEGIN

SELECT cast(convert(varchar, cast( d as date ) , 112) as int ) [date code], 
       cast( d as date )    [date name], 
       month( d )           [month],
       datename(qq, d)      [quarter],
       year( d )            [year],
       NULL                 [holiday],
       datename(weekday, d) [day of the week]

       into dbo.datetable

FROM   ( SELECT d = DATEADD(DAY, rn - 1, @start_date)
         FROM   ( SELECT TOP (DATEDIFF(DAY, @start_date, @end_date))
                         rn = ROW_NUMBER() OVER (ORDER BY s1.[object_id])
                  FROM   sys.all_objects AS s1
                  CROSS  JOIN sys.all_objects AS s2
                  ORDER  BY s1.[object_id]
                ) AS x
       ) AS y;
END
GO


/*
Parameters:
@start_date = 'YYYY-MM-DD'
@end_date = 'YYYY-MM-DD'
*/