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

SQL扩展日期并转换为2017年2月20日星期一的格式或Excel函数,sql,excel,date,casting,Sql,Excel,Date,Casting,我有一个选择开始和结束日期的SQL。我需要创建输出,以DayName、MonthName dd、yyyy的格式显示该范围内的所有日期,这是大写的扭曲 我一直在寻找,但我发现的所有答案,我相信都过于繁琐 或者。。。 Excel中是否有一种方法可以将格式转换为大写格式? 一旦我将日期字段格式化为DayName、MonthName dd、yyyy,它就不允许我执行=上限函数。不过,我更喜欢使用SQL来完成这一切 提前谢谢 我相信我能按照你的要求来做这件事 DECLARE @MinDate DATE =

我有一个选择开始和结束日期的SQL。我需要创建输出,以DayName、MonthName dd、yyyy的格式显示该范围内的所有日期,这是大写的扭曲

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

或者。。。 Excel中是否有一种方法可以将格式转换为大写格式? 一旦我将日期字段格式化为DayName、MonthName dd、yyyy,它就不允许我执行=上限函数。不过,我更喜欢使用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)

我认为Excel中没有办法将格式化的日期大写,但您可以使用公式将日期转换为文本值,然后将其大写,如in=UPPERTEXTNOW,dddd,mmmm dd,yyyyy-现在将其替换为包含日期的日期或单元格引用。@jonathan-我想我已经分析过了,并且理解了它的工作原理,但我有一个问题。我不确定我是否应该提出一个新问题,但这里是:我假设所有_对象交叉连接到自身的目的只是为了创建一个较大的行空间,然后使用该行空间创建所需的任意多个日期条目。如果您有一个小的数据库和一个大的日期范围,那么这种交叉连接不会产生足够的行,该怎么办?我意识到这不太可能。我承认我没有考虑过。“我将编辑我的答案,以包含另一种方式。”乔纳森-这是一种聪明的方法。经过一些研究,我发现它至少取决于两个特定于实现的特性:1选择而不从,2递归处理。例如,ORACLE需要FROM子句,并为虚拟目的提供双表。SAS PROC SQL实际上不提供这两种功能,尽管您可以伪造1。但是,这仍然是一个很好的例子。