Изменение года только в дате в столбце с оператором case

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

Я пробовал разные коды и операторы case, но ни один из них не работал

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
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
2
0
140
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

update table
set EndDate = dateadd(year, 2708, EndDate)
where year(EndDate) = 2004
Ответ принят как подходящий

Лично я бы использовал 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';

datefromparts() был идеальным, так как я не мог использовать обновление. Спасибо!

Anabella5c8d 29.05.2019 20:09

Другие вопросы по теме