TSQL:更新时间表的语言相关描述

时间:2015-11-16 09:18:45

标签: sql-server tsql dynamic time

我遇到了一个困扰我的问题,包括动态设置和更新时间表以及语言相关设置的描述。

我有一个名为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)的顺序,这应该像每个人都需要的那样可以订购。

1 个答案:

答案 0 :(得分: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]=@i)
  SET @dateformat   = (SELECT [dateformat] FROM  [dbo].[tbl_help_time_language] WHERE [htl_Desc]=@i)
  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

也许我可以到一个小的匹配表左右,但目前我不知道如何动态地做到这一点。