Изменение года только в дате в столбце с указанием случая - PullRequest
2 голосов
/ 28 мая 2019

У меня есть таблица с датами окончания в разные годы, и я хотел бы изменить любой год, заканчивающийся на '2004', на '4712'. Столбец имеет тип «Дата», и я получаю сообщение об ошибке

Я пробовал разные коды и описания случаев, но ни один из них не работал

select
    case
        when h.EndDate like '2004%' then '4712%'
        else h.EndDate
    end as EndDate
from table h

1/31/2004
2/28/2004
3/31/2004

и т. Д., Единственные годы будут изменены на:

1/31/4712
2/28/4712
3/31/4712

Ответы [ 2 ]

1 голос
/ 28 мая 2019

Лично я бы использовал datefromparts():

select datefromparts(4712, month(h.enddate), day(h.enddate))
from h
where h.enddate >= '2014-01-01' and h.enddate < '2015-01-01';

В обновлении это выглядит так:

update h
    set enddate = datefromparts(4712, month(h.enddate), day(h.enddate))
    where h.enddate >= '2014-01-01' and h.enddate < '2015-01-01';
1 голос
/ 28 мая 2019

Вы можете сделать это, используя dateadd().Like работает со строковым типом данных, таким как varchar, nvarchar и т. Д. При работе с датами вам нужно использовать функции, подготовленные для работы с этими типами данных (дата, дата-время и т. Д.). К вашей дате я добавил 2708 год, который добавил к 4712.

update table
set EndDate = dateadd(year, 2708, EndDate)
where year(EndDate) = 2004
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...