[英]Get Local Time Month Name in report builder (SSRS)
我写了这个SSRS
表达式来获取月份名称,它用英语给出了月份名称,但是我想获取本地时间或特定文化月份的名称(例如塞尔维亚语)。
如何解决SSRS
?
MonthName(Month(Today()))
我最初的想法是,您可以在获取月份名称之前使用SET LANGUAGE
进行SET LANGUAGE
。
但是,事实证明Sql Server不支持塞尔维亚语言(至少在Sql Server 2012中不是sys.syslanguages
),因此,最好的选择是使用本地化的月份名称和数字创建表或cte并使用它代替MonthName
函数。
编辑
实际上,表将为您提供更好的服务,因为只需要创建一次即可:
CREATE TABLE SerbianMonths (
SerbianMonths_Id int,
SerbianMonths_Name nvarchar(10)
)
INSERT INTO SerbianMonths VALUES
(1, N'јануар'),
(2, N'фебруар'),
(3, N'март'),
(4, N'април'),
(5, N'мај'),
(6, N'јун'),
(7, N'јул'),
(8, N'август'),
(9, N'септембар'),
(10, N'октобар'),
(11, N'новембар'),
(12, N'децембар')
(对不起,如果我拼写错误,我是从本网站复制的)
然后,您可以创建自己的用户定义函数,以按数字获取月份名称:
CREATE FUNCTION GetSerbianMonthName
(
@MonthNumber int
)
RETURNS nvarchar(10)
AS
BEGIN
DECLARE @MonthName nvarchar(10)
SELECT @MonthName = SerbianMonths_Name
FROM SerbianMonths
WHERE SerbianMonths_Id = @MonthNumber
RETURN @MonthName
END
并像这样使用它: SELECT dbo.GetSerbianMonthName(2)
如果要使用更多不受支持的语言,则可以在月份表中添加语言表和language_id列:
CREATE TABLE Languages
(
Language_Id int,
Language_Name nvarchar(100)
)
CREATE TABLE MonthNames
(
MonthNames_MonthNumber int, -- values from 1 to 12
MonthNames_LanguageId int, -- FK to languages table
MonthNames_Name nvarchar(100) -- the local month name
)
在MonthNumber和LanguageId上设置一个复合主键,并将语言ID添加到此表中的选择中:
CREATE FUNCTION GetMonthName
(
@Language_Id int,
@MonthNumber int
)
RETURNS nvarchar(10)
AS
BEGIN
DECLARE @MonthName nvarchar(100)
SELECT @MonthName = MonthNames_Name
FROM MonthNames
WHERE MonthNames_MonthNumber = @MonthNumber
AND MonthNames_LanguageId = @Language_Id
RETURN @MonthName
END
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.