如何在一年的TSQL中添加一个数字

时间:2017-10-23 09:40:18

标签: sql-server tsql

我想在我的日期添加一个数字

例如,我的列 F9 包含日期 2015.10.17 ,我有一个 F49 列,其中有一个数字 10

最终结果应为 2025.10.17 ,因此该数字只应添加到年份中,就是这样。

所有三列都是典型的varchar

我试图尽可能简单但不起作用

UPDATE A.dbo.B
SET F29 = F9 + F49

4 个答案:

答案 0 :(得分:2)

如果列类型为Data / datetime

UPDATE A.dbo.B SET F29 = DATEADD(year,F49,F9)

或者

 F29  = CAST(CAST(SUBSTRING(F9,1,4) as INT) + F49 as VARCHAR(4)) + SUBSTRING(F9,5,LEN(F9))

答案 1 :(得分:0)

使用DATEADD,如下所示

UPDATE A.dbo.B
SET F29 = dateadd(year,F49,F9)

答案 2 :(得分:0)

使用以下脚本测试功能:

DECLARE @Table TABLE (F9 VARCHAR(20), F49 VARCHAR(10))

INSERT INTO @Table VALUES ('2015.10.17', '10')

SELECT DATEADD(YEAR, CAST(t.F49 AS INT), CAST(t.F9 AS DATETIME))
FROM   @Table AS t

最后使用以下脚本进行更新:

UPDATE A.dbo.B
SET F29 = DATEADD(YEAR, CAST(t.F49 AS INT), CAST(t.F9 AS DATETIME))

答案 3 :(得分:0)

大致使用之前question中讨论的完全相同的逻辑。您像以前一样转换F9列,将dateadd函数应用于它以将F49添加为年,然后使用适当的格式将结果转换回char(10)。 OR 您可以修复您的架构,而不必处理这些自行创建的问题。