如何仅更改date数据类型的年份

woo*_*gie 20 sql sql-server

我有一个生日列表,年份是唯一不正确的部分.我有这些人的ID#列表.有没有办法只改变所有这些人的一年?我在考虑制作一个查询结果表,然后使用UPDATE SET查询,但我不知道如何只更改年份.

在此输入图像描述

编辑中包含的示例.每年需要减少2.

Aar*_*and 36

如果所有行都需要减少两年,那么:

UPDATE dbo.TableToUpdate
  SET [Date Column] = DATEADD(YEAR, -2, [Date Column]);
Run Code Online (Sandbox Code Playgroud)


Mic*_*uen 25

这是我能想到的最短,将年份改为2050年:

select 
    dateadd(year, (2050 - year(d)), d)            
from x
Run Code Online (Sandbox Code Playgroud)

样本数据:

create table x(d date);

insert into x values
('2001-11-19'),
('2020-07-05'),
('2012-05-01');
Run Code Online (Sandbox Code Playgroud)

输出:

COLUMN_0
2050-11-19
2050-07-05
2050-05-01
Run Code Online (Sandbox Code Playgroud)

现场测试:http://www.sqlfiddle.com/#!3/9a8b4/2

  • 这就是要求,只更改年份 (2认同)

Mat*_*der 5

万一其他人需要它用于 MySQL,这里是语法:

UPDATE dbo.TableToUpdate 
SET    [Date Column] = DATE_ADD([Date Column], INTERVAL -2 year); 
Run Code Online (Sandbox Code Playgroud)