T SQL Преобразование строки только в год - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть следующая таблица:

 SELECT * FROM [dbo].[Dimension_Game_Developer]

Схема таблицы:

enter image description here

Пример данных вывода оператора select:

enter image description here

Я пытаюсь преобразовать строковую дату в дату только для года, используя следующее:

 update [dbo].[Dimension_Game_Developer] 
 SET [Year_of_Release] = CAST([Year_of_Release] as DATE)

Как бы я это сделал изменение? Возможно конвертировать лучше CAST для этого?

Ответы [ 2 ]

0 голосов
/ 05 апреля 2020

для форматирования значений без необходимости приведения и подстроки

используйте функцию Call Формат o try_cast

пример:

DECLARE @d DATETIME = '10/01/2011';  

declare @tab table (StartDate date,  year varchar(6),val1  int,val2  int)
insert into @tab(StartDate,year,val1,val2) values('2014-02-15','2015.0',0,0)
insert into @tab(StartDate,year,val1,val2) values('2015-02-15','2016.0',0,0)
insert into @tab(StartDate,year,val1,val2) values('2016-02-15','2017.0',0,0)
insert into @tab(StartDate,year,val1,val2) values('2017-02-15','2018.0',0,0)

update @tab SET [val1] = FORMAT ( StartDate, 'yyyy'),[val2] =try_cast(year as decimal(18,0))

select * from @tab

эти две функции можно найти в документации сервера sql

0 голосов
/ 05 апреля 2020

Вам нужно разыграть Year_of_Release как int, как показано ниже.

 update [dbo].[Dimension_Game_Developer] 
 SET [Year_of_Release] = CAST(Convert(Varchar(4), [Year_of_Release]) as int)

Вы также можете преобразовать его в float.

update [dbo].[Dimension_Game_Developer] SET [Year_of_Release] = 
CAST([Year_of_Release] as float)

Для решения проблемы необходимо постоянно обновлять тип данных столбца Year_of_Release до int и вставлять значение в целое число далее.

Чтобы изменить тип данных столбца:

ALTER TABLE [dbo].[Dimension_Game_Developer] ALTER COLUMN Year_of_Release int;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...