2015-11-16 53 views
0

我有一個問題,它打擾了我很長一段時間,動態設置和更新時間表的描述以及語言相關的設置。TSQL:更新時間表的語言相關描述

我有一個名爲dbo.time_language的表,它包含語言的順序(1,2,3),國家的LCID(1031,1033,1036)和別名(德語,英語,法國) 。

現在我想更新我有day_desc_1,day_desc_2和day_desc_3等了一個月,季表dbo.time等

[Day]       = CONVERT (CHAR(8),[Date],112) 
    ,[Day_Desc_1]     = NULL 
    ,[Day_Desc_2]     = NULL 
    ,[Day_Marker]     = NULL 

    ,[Month]      = DATEPART(MONTH, [Date]) 
    ,[Month_Desc_1]     = NULL 
    ,[Month_Desc_2]     = NULL 
    ,[Month_Marker]     = NULL 

    ,[Quarter]      = DATEPART(QUARTER, [Date]) 
    ,[Quarter_Desc_1]    = NULL 
    ,[Quarter_Desc_2]    = NULL 
    ,[Quarter_Marker]    = NULL 

的一點是,我想更新這些描述導致dbo.time_language(1,2,3)的順序應該像所有人都需要的那樣進行訂購。

+0

AFAIK,你可以簡單地使用sql server的內置'SET LANGUAGE'來爲你做翻譯,我很肯定這三種語言都是內置的。 –

+0

感謝你的快速響應。不知何故,我認爲在會議中更改語言不是最佳做法嗎? – aalyanu

+0

也許最好在應用程序級別移動此問題,並在SQL中保留一個日期。如果您將來需要其他語言怎麼辦? – huhu78

回答

0

對於此刻,我想這一點:

DECLARE @i   INT = (SELECT MIN([htl_Desc]) FROM [dbo].[tbl_help_time_language]) 
DECLARE @j   INT = (SELECT MAX([htl_Desc]) FROM [dbo].[tbl_help_time_language]) 
DECLARE @language NVARCHAR(50) 
DECLARE @dateformat NVARCHAR(10) 

WHILE @i < @j 
BEGIN 
    --PRINT @i 
    SET @language  = (SELECT [htl_alias] FROM [dbo].[tbl_help_time_language] WHERE [htl_Desc][email protected]) 
    SET @dateformat = (SELECT [dateformat] FROM [dbo].[tbl_help_time_language] WHERE [htl_Desc][email protected]) 
    SET LANGUAGE @language 
    SET DATEFORMAT @dateformat 

    UPDATE [dbo].[tbl_help_time] SET [Day_Desc_1] = 'get the right format and convert to leading country' 

    --PRINT @dateformat 
    --PRINT @i 
    SET @i = @i + 1 
END 

也許我可以給一個小匹配表左右,但此刻我不知道該怎麼做動態。