在SQL Server中临时编辑字段

在SQL Server中临时编辑字段,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我正在尝试以多种形式显示数据,但我对MSSQL非常陌生。有一个表有50行,其中有一个字段类似于2017年1月1日,但是我需要显示这个字段类似于2017年1月1日。如何在MSSQL中实现这一点 我尝试过游标的小示例,因为这只是一个示例,我将进一步编辑数据,我需要遍历请求的每一行并执行多个编辑。到目前为止,我取得的成就是: CREATE PROCEDURE dbo.text2 AS select TOP (50) * FROM table; GO 这将显示50行,但我无法通过其行或列进行迭代。我也

我正在尝试以多种形式显示数据,但我对MSSQL非常陌生。有一个表有50行,其中有一个字段类似于
2017年1月1日
,但是我需要显示这个字段类似于
2017年1月1日
。如何在MSSQL中实现这一点

我尝试过游标的小示例,因为这只是一个示例,我将进一步编辑数据,我需要遍历请求的每一行并执行多个编辑。到目前为止,我取得的成就是:

CREATE PROCEDURE dbo.text2
AS
select TOP (50) * FROM table;
GO
这将显示50行,但我无法通过其行或列进行迭代。我也试过了

DECLARE cur_mkt CURSOR FOR
select TOP (50) [field] FROM  table

OPEN cur_mkt
FETCH NEXT FROM cur_mkt INTO @A

WHILE (@@FETCH_STATUS = 0)
    BEGIN
        PRINT @A    
        FETCH NEXT FROM cur_mkt INTO @A
    END

CLOSE cur_mkt
DEALLOCATE cur_mkt
但这将只显示一列,这不是一个可行的解决方案,因为我应该能够处理至少150列

我也尝试过使用函数,但未能实现它。你能给我一个更好的指示,告诉我该怎么做吗

表中数据的示例如下所示

ID   DATE         PIECE1   PIECE2
1    01Jan2017    ABC      DEF
2    02Jan2017    ABC      DEF
现在在结果中,必须显示数据

ID   DATE         PIECE1   PIECE2  JOIN
1    01/01/2017   ABC      DEF     ABCDEFGHE
2    02/01/2017   ABC      DEF     ABCDEFGHI
连接行上的“GHE”或“GHI”是添加的字符串,可以是GHE或GHI

提前谢谢

Select convert(varchar(10),convert(date,'15Jan2017'),101)
返回

01/15/2017
编辑-为新信息更新

返回

01/15/2017
编辑-为新信息更新



将日期存储为
date
数据类型(日期时间存储为
datetime
datetime2(0-7)
数据类型),并在应用程序中按需要设置格式。是否将日期存储为字符串?停止这样做,您将避免很多麻烦。这些表单是windows表单还是web表单?从数据库中检索数据并在表单中显示的代码是什么?您使用的是哪种编程语言?您是否尝试过在mssql中转换函数以将字符串转换为日期?我在SQL Management studio上使用T-SQL处理此问题。我还没有尝试将字符串转换为日期,因为我还没有找到方法。请将日期存储为
date
数据类型(日期时间存储为
datetime
datetime2(0-7)
数据类型),并在应用程序中按照您的需要设置格式。是否将日期存储为字符串?停止这样做,您将避免很多麻烦。这些表单是windows表单还是web表单?从数据库中检索数据并在表单中显示的代码是什么?您使用的是哪种编程语言?您是否尝试过在mssql中转换函数以将字符串转换为日期?我在SQL Management studio上使用T-SQL处理此问题。我还没有尝试将字符串转换为日期,因为我还没有找到一种方法。我如何编辑它
选择convert(varchar(10),convert(date,'2017年1月15日'),101)
,逐段
varchar(10)
inical DataType?,
convert(date,'2017年1月15日'),101)
我如何在这里将2017年1月15日更改为表的字段?@CrisAlfie我将2017年1月15日作为一个示例。只需将“2017年1月15日”替换为您的实际字段即可name@CrisAlfie我要补充的是,第一个(或内部)转换将把字符串转换成日期类型,第二个(或外部)将把日期转换成格式化的日期类型string@CrisAlfie不清楚为什么在这里使用光标。也许如果您编辑您的问题并提供一些示例数据和期望的结果,我们(因此)可以提供额外的帮助,您可以看到,因为这个日期字段只是一个示例,我考虑首先使用游标,因为它与MySQL相似,我可以更好地使用,而且我的想法是获取日期的子字符串,但要做到这一点,我需要遍历每一行和每一列,以便以相同的方式显示每一行。另一个例子是连接两行并将连接插入另一列中。我如何编辑它
选择convert(varchar(10),convert(date,'2017年1月15日'),101)
,逐段
varchar(10)
inical DataType?,
convert(date,'2017年1月15日'),101)
我如何在这里将2017年1月15日更改为表的字段?@CrisAlfie我将2017年1月15日作为一个示例。只需将“2017年1月15日”替换为您的实际字段即可name@CrisAlfie我要补充的是,第一个(或内部)转换将把字符串转换成日期类型,第二个(或外部)将把日期转换成格式化的日期类型string@CrisAlfie不清楚为什么在这里使用光标。也许如果您编辑您的问题并提供一些示例数据和期望的结果,我们(因此)可以提供额外的帮助,您可以看到,因为这个日期字段只是一个示例,我考虑首先使用游标,因为它与MySQL相似,我可以更好地使用,而且我的想法是获取日期的子字符串,但要做到这一点,我需要遍历每一行和每一列,以便以相同的方式显示每一行。另一个例子是连接两行并将连接插入另一列。
ID  Date        PIECE1  PIECE2  JOIN
1   01/01/2017  ABC     DEF     ABCDEFxxx
2   01/02/2017  ABC     DEF     ABCDEFyyy