[英]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.