,我相信我能夠做你要求與此
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