誕生日のリストがありますが、間違っているのは年だけです。これらの個人の ID 番号のリストがあります。これらすべての人々の年だけを変更する方法はありますか? クエリ結果のテーブルを作ってからクエリを使うようなことを考えていたのUPDATE
SET
ですが、年だけを変更する方法がわかりません。
編集に含まれるサンプル。毎年 2 ずつ減らす必要があります。
誕生日のリストがありますが、間違っているのは年だけです。これらの個人の ID 番号のリストがあります。これらすべての人々の年だけを変更する方法はありますか? クエリ結果のテーブルを作ってからクエリを使うようなことを考えていたのUPDATE
SET
ですが、年だけを変更する方法がわかりません。
編集に含まれるサンプル。毎年 2 ずつ減らす必要があります。
すべての行を 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
を使用できますが、その時点で以下は短くなります。DATETIMEFROMPARTS
SMALLDATETIMEFROMPARTS
UPDATE dbo.TableToUpdate
SET [Date Column] = DATEADD
(
YEAR,
-DATEDIFF(YEAR, '20190101', [Date Column]),
[Date Column]
);
これが私が考えることができる最短のもので、年を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