Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server TSQL:更新时间表的语言相关描述_Sql Server_Tsql_Dynamic_Time - Fatal编程技术网

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

Sql server TSQL:更新时间表的语言相关描述,sql-server,tsql,dynamic,time,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) ,[

我有一个长期困扰我的问题,就是时间表的动态设置和更新描述以及与语言相关的设置

我有一个名为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_语言(1,2,3)的顺序,它应该像每个人都需要的那样可以排序。

目前我正在尝试以下内容:

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
DECLARE@i INT=(从[dbo].[tbl\u help\u time\u language]中选择MIN([htl\u Desc]))
声明@j INT=(从[dbo].[tbl\u help\u time\u language]中选择MAX([htl\u Desc]))
声明@language NVARCHAR(50)
声明@dateformat NVARCHAR(10)
而@i<@j
开始
--打印@i
设置@language=(从[dbo].[tbl\U帮助\U时间\U语言]中选择[htl\U别名],其中[htl\U描述]=@i)
设置@dateformat=(从[dbo].[tbl\U帮助\U时间\U语言]中选择[dateformat],其中[htl\U描述]=@i)
设置语言@语言
设置DATEFORMAT@DATEFORMAT
更新[dbo]。[tbl\u帮助\u时间]设置[Day\u Desc\u 1]=“获取正确的格式并转换为领先国家”
--打印@日期格式
--打印@i
设置@i=@i+1
结束

也许我可以创建一个小的匹配表,但目前我不知道如何动态地执行此操作。

AFAIK,您只需使用sql server的内置
SET语言
,即可为您进行翻译,我非常确定这三种语言都是内置的。感谢您的快速响应。不知何故,我认为在会话中更改语言不是最好的做法?也许最好将此问题转移到应用程序级别,并在SQL中只保留一个日期。如果将来需要其他语言怎么办?这正是我的观点,我想控制表dbo.time\u language中的描述/顺序,以便添加其他语言。我已经编写了一个WHILE参数来设置@language和dateformat的动态值,但是我需要使用setted dateformat来将我的字符'yyyymmdd'转换为国家的格式