在SQL中创建存储过程以创建暗淡的日期

时间:2019-10-30 07:41:57

标签: sql sql-server stored-procedures

我需要在SQL Server中创建一个存储过程,该存储过程将为我创建暗淡的日期。

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

我需要的列:

  • 日期代码为整数
  • 日期名称为日期
  • 月份为整数
  • 四分之一整数
  • 年份为整数
  • 假期为nvarchar /整数(我在“假期”表中填写)
  • 一周中的天为nvarchar

1 个答案:

答案 0 :(得分:1)

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'
*/
相关问题