Как добиться даты формата SSRS Пример 12 января 2019 - PullRequest
0 голосов
/ 13 мая 2019

Используя выражение, я могу получить дату для мат, как это в SSRS. Ниже приведено выражение: =FORMAT(Cdate(today), "dd-MM-yyyy")

Тем не менее, я хотел бы видеть дату как: 12 января 2019 года или 1 января 2019 года или 2 февраля 2019 года.

Как мне этого добиться?

Ответы [ 2 ]

1 голос
/ 13 мая 2019

Вот выражение, которое дает желаемый результат.

=day(today) &
IIF((day(today))Mod 10=1 and  (day(today))Mod 100 <>11,
"st",
IIF((day(today))Mod 10=2 and  (day(today))Mod 100 <>12,
"nd",
IIF((day(today))Mod 10=3 and  (day(today))Mod 100 <>13,
"rd",
"th")
)
)
& " " & MonthName(Month(today)) & " "& Year(today)

enter image description here

0 голосов
/ 13 мая 2019

Вы можете конвертировать дату в формат, например

01 Mar 2019 06: 21: 58: 010 Используя преобразование ниже

ВЫБРАТЬ КОНВЕРТ (NVARCHAR (30), GETDATE (), 113)

, но вы не можете напрямую конвертировать, как показано ниже

12 января 2019 года или 1 января 2019 года или 2 февраля 2019 года.

но вы можете добиться этого, используя функцию

CREATE FUNCTION [dbo].[Ufn_GetDateWithSelectedFormat]
(
    @Date DATETIME 
)
RETURNS NVARCHAR(50)
AS
BEGIN

    DECLARE @DateValue NVARCHAR(50) = (SELECT CONVERT(NVARCHAR(50),GETDATE(),113))
    DECLARE @OnesPlaceNum INT = (SELECT SUBSTRING(@DateValue,1,2))

    SET @DateValue = CASE WHEN (@OnesPlaceNum % 10 = 1 AND @OnesPlaceNum % 100 <> 11) THEN (SELECT SUBSTRING(@DateValue,1,2)) + 'St' + (SELECT SUBSTRING(@DateValue,3,LEN(@DateValue)))
                      WHEN (@OnesPlaceNum % 10 = 2 @OnesPlaceNum % 100 <> 22) THEN (SELECT SUBSTRING(@DateValue,1,2)) + 'Nd' + (SELECT SUBSTRING(@DateValue,3,LEN(@DateValue)))
                      WHEN (@OnesPlaceNum % 10 = 3 @OnesPlaceNum % 100 <> 33) THEN (SELECT SUBSTRING(@DateValue,1,2)) + 'Rd' + (SELECT SUBSTRING(@DateValue,3,LEN(@DateValue)))
                      ELSE (SELECT SUBSTRING(@DateValue,1,2)) + 'Nd' + (SELECT SUBSTRING(@DateValue,3,LEN(@DateValue))) END

RETURN @DateValue
END
GO

Затем вы можете вызвать эту функцию, например

SELECT [dbo] .Ufn_GetDateWithSelectedFormat, тогда вы получите ответ, как 13 мая 2019 года11: 40: 50: 343

...