,我相信我能够做你要求与此
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中的一个方法,使一个格式化的日期大写,但你可以用一个公式来把日期转换为文本值,然后使它大写,如'= UPPER( TEXT(NOW(),“dddd,mmmm dd,yyyy”))' - 用包含日期的日期或单元格引用替换“NOW()”。 – vknowles