我想在我的日期添加一个数字
例如,我的列 F9 包含日期 2015.10.17 ,我有一个 F49 列,其中有一个数字 10
最终结果应为 2025.10.17 ,因此该数字只应添加到年份中,就是这样。
所有三列都是典型的varchar
我试图尽可能简单但不起作用
UPDATE A.dbo.B
SET F29 = F9 + F49
答案 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 您可以修复您的架构,而不必处理这些自行创建的问题。