Обновление части года в столбце SQL Дата сервера - PullRequest
0 голосов
/ 08 февраля 2020

Table_Data

Мне нужно изменить только часть года каждого значения столбца ChangedDate на 2017.

Например:

2017-02-08 13:55:30.193   
2017-02-08 13:55:30.193  
2017-02-08 13:55:30.193

Ответы [ 3 ]

1 голос
/ 08 февраля 2020

вы можете обновить все ваши столбцы данных с помощью функции DATEADD ()

update t1
    set update_at = t2.update_now
    from (select id,DATEADD(year, 1,update_at ) as update_now from t1) as t2
    where t1.id = t2.id
select * from t1;
0 голосов
/ 08 февраля 2020

Я бы лично использовал функцию DATETIMEFROMPARTS - кажется, самый чистый способ, без преобразования каждого DATETIME в строку, а затем возиться с перехватыванием и склеиванием строки снова и преобразованием обратно в DATETIME ... .

Попробуйте это:

SELECT 
    Id, ChangedDate,

    DATETIMEFROMPARTS(2017, MONTH(ChangedDate), DAY(ChangedDate), 
                      DATEPART(HOUR, ChangedDate), DATEPART(MINUTE, ChangedDate), 
                      DATEPART(SECOND, ChangedDate), DATEPART(MILLISECOND, ChangedDate))
FROM 
    dbo.YourTableNameHere
0 голосов
/ 08 февраля 2020
DECLARE @DateCol datetime = '2020-02-08 13:55:30.193'

SELECT 
    CONVERT(varchar(50), DATEPART(YYYY,'2017-02-08')) + '-' +
    CONVERT(varchar(50), DATEPART(mm, @DateCol)) + '-' +
    CONVERT(varchar(50), DATEPART(dd, @DateCol)) + ' ' +
    CONVERT(char(12), CAST(@DateCol AS TIME))

Выход

2017-2-8 13:55:30.193

Подробнее об этом здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...