28

誕生日のリストがありますが、間違っているのは年だけです。これらの個人の ID 番号のリストがあります。これらすべての人々の年だけを変更する方法はありますか? クエリ結果のテーブルを作ってからクエリを使うようなことを考えていたのUPDATE SETですが、年だけを変更する方法がわかりません。

ここに画像の説明を入力

編集に含まれるサンプル。毎年 2 ずつ減らす必要があります。

4

3 に答える 3

47

すべての行を 2 年減らす必要がある場合は、次のようになります。

UPDATE dbo.TableToUpdate
  SET [Date Column] = DATEADD(YEAR, -2, [Date Column]);

すべての行を特定の年 (たとえば 2019 年) に設定する必要があり、列が次の場合date:

UPDATE dbo.TableToUpdate
  SET [Date Column] = DATEFROMPARTS(2019, MONTH([Date Column]), DAY([Date Column]);

すべての行を特定の年 (たとえば 2019 年) に設定する必要があり、列が でない場合は、またはdateを使用できますが、その時点で以下は短くなります。DATETIMEFROMPARTSSMALLDATETIMEFROMPARTS

UPDATE dbo.TableToUpdate
  SET [Date Column] = DATEADD
  (
    YEAR, 
    -DATEDIFF(YEAR, '20190101', [Date Column]), 
    [Date Column]
  );
于 2012-04-30T18:03:38.953 に答える
26

これが私が考えることができる最短のもので、年を2050に変更します。

select 
    dateadd(year, (2050 - year(d)), d)            
from x

サンプルデータ:

create table x(d date);

insert into x values
('2001-11-19'),
('2020-07-05'),
('2012-05-01');

出力:

COLUMN_0
2050-11-19
2050-07-05
2050-05-01

ライブテスト:http ://www.sqlfiddle.com/#!3 / 9a8b4 / 2

于 2012-04-30T18:15:24.767 に答える