0

使用表达式,我可以在 SSRS 中像这样获取 mat 的日期。下面是表达式:=FORMAT(Cdate(today), "dd-MM-yyyy")

但是,我希望看到日期为:2019 年 1 月 12 日或 2019 年 1 月 1 日或 2019 年 2 月 2 日。

我怎样才能做到这一点?

4

2 回答 2

2

这是为您提供所需结果的表达式。

=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)

在此处输入图像描述

于 2019-05-13T06:37:01.063 回答
0

您可以将日期转换为格式,例如

2019 年 3 月 1 日 06:21:58:010 通过使用以下转换

选择转换(NVARCHAR(30),GETDATE(),113)

但你不能像下面这样直接转换

2019 年 1 月 12 日或 2019 年 1 月 1 日或 2019 年 2 月 2 日。

但是您可以通过使用该功能来实现

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 然后你会得到像 13Rd May 2019 11:40:50:343 这样的答案

于 2019-05-13T05:48:46.750 回答