T-SQL: изменение даты, только дни и месяцы - PullRequest
0 голосов
/ 21 мая 2018

В SQL Server 2016 в одной таблице я хочу изменить столбец даты следующим образом:

1936-12-15
1928-11-04
1940-09-18
1933-04-26
1942-08-17

На следующий, меняя только месяцы и дни на 05-20, оставляя только годы!

1936-05-20
1928-05-20
1940-05-20
1933-05-20
1942-05-20

Я попробовал следующее:

UPDATE [column]
SET [column] = DATEADD(mm, 5, [column])

Но это добавило 5 месяцев ко всем датам!

Пожалуйста, помогите.Спасибо.

Ответы [ 3 ]

0 голосов
/ 21 мая 2018

Использование FORMATMESSAGE:

UPDATE tab
SET col = FORMATMESSAGE('%i0520',YEAR(col));

DBFiddle Demo

0 голосов
/ 21 мая 2018
UPDATE [Table]
  SET [column] = FORMAT([column],'yyyy-05-20')
0 голосов
/ 21 мая 2018

Вы, похоже, используете SQL Server:

UPDATE [column]
    SET [column] = datefromparts(year(column), 5, 20);

В более ранних версиях SQL Server вы можете сделать:

UPDATE [column]
    SET [column] = datename(year, column) + '0520'

Это автоматически преобразует строку в правильную дату(хотя вы также можете добавить явный cast() / convert()).

...