我很难在数据库的某些列中更新YEAR数据。值类似于201201(年+月)。此列的数据类型(month_id)是数字。我只需要将201201更改为201501,201301到201601,这样就可以将+3添加到年份。 我尝试过使用CAST,CONVERT。试图写下如下查询:
UPDATE Table
SET month_id = SUBSTRING(CAST(month_id as VARCHAR(10)), 1, 4) +3
WHERE month_id = '202011'
它给出结果为2023.不是202311.后来我尝试了CONCAT,但它给出算术错误。 有人可以建议一个合适的解决方案吗?
也与另一列day_desc(datatype - nchar [10])相同,值类似于01.01.2012,01.01.2013等...此处也需要更改年份。但由于数据格式不同,我无法做到。
答案 0 :(得分:0)
这是怎么回事:
UPDATE Table
SET month_id = month_id + 300
答案 1 :(得分:0)
这应该有效
UPDATE Table
SET month_id = CONCAT( CAST(LEFT(month_id, 4) + 3 AS NVARCHAR(4)), RIGHT(month_id, 2))
WHERE month_id = '202011'
根据您的评论进行编辑,输入内容为'01 .01.2014':
UPDATE MyTable
SET MyColumn = CONCAT(LEFT(MyValue, 6), CONVERT(INT, RIGHT(MyValue, 4))+3)
WHERE MyColumn = '01.01.2014'
Edit2,根据您对其他帖子的评论:
如果您的目标是避免对同一记录进行多次更新,请假设您已将201401
更新为201701
,并且您不希望查询为202001
,因此您需要更新其他列例如UPDATED BIT
,其中1 =已经更新,0 =未更新。
更多,小心where子句:你真的想用新的逻辑(增加3年)更新你的所有表记录,或者你可能只想看其中的一些。
答案 2 :(得分:0)
这将无需您进行任何演员......
glide