使用表达式,我可以在SSRS中获得像这样的垫子的日期。下面是表达式:=FORMAT(Cdate(today), "dd-MM-yyyy")
但是,我希望看到的日期是:2019年1月12日或2019年1月1日或2019年2月2日。
我该如何实现?
答案 0 :(得分:1)
这是为您提供所需结果的表达式。
=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)
答案 1 :(得分:0)
您可以将日期转换为
之类的格式2019年3月1日06:21:58:010通过使用以下转换
SELECT CONVERT(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
的答案