DECLARE @day int = datepart(day,getdate())
SELECT CONCAT(@day,
CASE WHEN @day=1 OR @day=21 OR @day=31 THEN 'st'
WHEN @day=2 OR @day=22 THEN 'nd'
WHEN @day=3 OR @day=23 THEN 'rd' ELSE 'th' END, ' of ',DATENAME(month,GETDATE()),' ',datepart(year,getdate()) )AS 'Date'
Дало бы вам что-то вроде этого.
Изменить: если вы сделаете это как функцию и передадите дату как параметр, вы можете использовать это практически где угодно. Нужно будет заменить getdate () именем параметра, затем
CREATE FUNCTION [dbo].[fnc_GetDateString]
(
@date DATETIME
)
RETURNS nvarchar(100)
AS
BEGIN
--DECLARE @date DATETIME = '2020-08-31'
DECLARE @day int = datepart(day,@date)
DECLARE @DateString nvarchar(100)
SET @DateString = CONCAT(@day,
CASE WHEN @day=1 OR @day=21 OR @day=31 THEN 'st'
WHEN @day=2 OR @day=22 THEN 'nd'
WHEN @day=3 OR @day=23 THEN 'rd' ELSE 'th' END, ' of ',DATENAME(month,@date),' ',datepart(year,@date) )
RETURN @DateString
END