2016-09-30 5 views
-2

Мне нужно пройти весь столбец данных datetime и изменить год, чтобы все они были в 2016 году. У меня есть клиент, который решил изменить мой код, и он подтолкнул математику, которую я написал, что вычисляет текущую дату и время. Так вот, они видят годы 2016, 2116, 2216 и т. Д. В любом случае, я ищу некоторый скрипт, который будет проходить через столбец, и если последние четыре цифры столбца не являются 2016, замените последние четыре цифры на 2016, в то время как исходные данные остаются неизменными.SQL Modify Column Data

I.e. Если дата xx/xx/2116, измените ее на xx/xx/2016.

Я, к сожалению, плохо разбираюсь в SQL, чтобы быстро исправить это, поэтому я обращаюсь к вам за помощью! : D

Заранее спасибо.

+1

ли столбец 'datetime' или' varchar'? –

ответ

1

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

UPDATE dbo.YourTable 
SET SomeColumn = STUFF(SomeColumn,LEN(SomeColumn)-3,4,'2016') 
WHERE RIGHT(SomeColumn,4) <> '2016'; 
+0

Отлично! Еще: Есть около 30 тыс. Ячеек, где дата равна «582016». Мне нужно обрезать это до 2016 года. – Flibertyjibbet

+0

@Addohm 'SET SomeColumn = '2016' WHERE SomeColumn = '582016''? – Lamak

+0

Это будет выглядеть только в 2016 году, не так ли? Столбцами являются xx/xx/582016. – Flibertyjibbet

0

Если datetime тип данных вы можете использовать DATEADD и DATEDIFF:

UPDATE YourTable 
SET DateColumn = DATEADD(YEAH,DATEDIFF(YEAR,DateColumn,GETDATE()),DateColumn) 
WHERE DATEDIFF(YEAR,GETDATE(),DateColumn) != 0 
0

Я вижу, ваша колонка столбец даты и времени.

Если да, то вы можете использовать следующий код:

DECLARE @ChangeToYear VARCHAR(4) = '2016' 

UPDATE TableToBeChanged 
SET DateFieldToConvert = 
    (SELECT DATEADD(YEAR, @ChangeToYear - YEAR(DateFieldToConvert), DateFieldToConvert)) 
0
Update YourTable 
Set YourDate = Dateadd(year, 2016 - year(YourDate), YourDate) 
Where Year(YourDate) <> 2016