SQL修改列数据

时间:2016-09-30 14:59:56

标签: sql sql-server sql-server-2008

我需要查看整个日期时间数据列并修改年份,以便它们都是2016年。我有一位客户决定修改我的代码并且它打破了计算当前日期和时间的数学计算。所以现在,他们看到2016年,2116年,2216年等等。无论如何,我正在寻找的是一些将通过列的脚本,如果列的最后四位数不是2016年,则替换最后四位数字2016年,而初始数据仍然完好无损。

即。如果日期为xx / xx / 2116,请将其更改为xx / xx / 2016。

4 个答案:

答案 0 :(得分:2)

使用STUFF

UPDATE dbo.YourTable
SET SomeColumn = STUFF(SomeColumn,LEN(SomeColumn)-3,4,'2016')
WHERE RIGHT(SomeColumn,4) <> '2016';

答案 1 :(得分:0)

如果是datetime数据类型,您可以使用DATEADD和DATEDIFF:

UPDATE YourTable
SET DateColumn = DATEADD(YEAH,DATEDIFF(YEAR,DateColumn,GETDATE()),DateColumn)
WHERE DATEDIFF(YEAR,GETDATE(),DateColumn) != 0

答案 2 :(得分:0)

我看到您的列是日期时间列。

如果是这样,您可以使用以下代码:

DECLARE @ChangeToYear VARCHAR(4) = '2016'

UPDATE TableToBeChanged 
SET DateFieldToConvert =
    (SELECT DATEADD(YEAR, @ChangeToYear - YEAR(DateFieldToConvert), DateFieldToConvert))

答案 3 :(得分:0)

Update YourTable
Set YourDate = Dateadd(year, 2016 - year(YourDate), YourDate)
Where Year(YourDate) <> 2016