SQL扩展date并转换为格式2017年2月20日星期一OR Excel函数

我有一个select开始和结束date的SQL。 我需要创build输出,以DayName,MonthName dd,yyyy格式显示该范围的所有date,这里是大写的扭曲…。

我一直在寻找,但我发现所有的答案,我相信是过于繁琐。

或者…有没有办法在Excel中格式化为大写格式? 一旦我将date字段格式化为DayName,MonthName dd,yyyy,它不允许我执行= UPPER()函数。 我宁愿用SQL来完成这一切。

提前致谢。

我相信我能够做到你所要求的

 DECLARE @MinDate DATE = '20120101', @MaxDate DATE = '20140101'; with cte (testDate) as( SELECT TOP (DATEDIFF(DAY, @MinDate, @MaxDate) + 1) Date = DATEADD(DAY, ROW_NUMBER() OVER(ORDER BY a.object_id) - 1, @MinDate) FROM sys.all_objects a CROSS JOIN sys.all_objects b ) select UPPER(CAST(DATENAME(dw, testDate)as varchar(10)) + ', ' + CAST(DATENAME(MM, testDate) as varchar(10)) + ' ' + CAST(DAY(testDate) as varchar(2)) + ', ' + CAST(YEAR(testDate) as varchar(4))) as test FROM cte 

编辑:对于vknowles这是另一种方式,你可以得到相同的结果,而不使用cte交叉连接。

 DECLARE @MinDate DATE = '20120101', @MaxDate DATE = '20140101'; WITH cte (testDate) AS ( SELECT CAST(@MinDate as DATETIME) as testDate UNION ALL SELECT testDate + 1 FROM cte WHERE testDate + 1 <= @MaxDate ) select UPPER(CAST(DATENAME(dw, testDate)as varchar(10)) + ', ' + CAST(DATENAME(MM, testDate) as varchar(10)) + ' ' + CAST(DAY(testDate) as varchar(2)) + ', ' + CAST(YEAR(testDate) as varchar(4))) as test FROM cte OPTION (MAXRECURSION 0)