Невозможно изменить столбец varchar на тип даты - PullRequest
0 голосов
/ 02 июня 2019

В моей базе данных SQL Server 2017 есть таблица, содержащая столбец varchar(10), все значения которого точно соответствуют date. Вот некоторые примеры значений, но есть еще много:

2014-06-30
2004-05-06
2014-06-30
2001-08-18
2004-05-06
2009-06-30
2001-08-18
2004-05-06
2009-06-30
2001-08-18
2004-05-06

Я пытаюсь преобразовать этот столбец в date:

alter table SourceTable1 alter column END_DATE date;

... но я всегда получаю эту ошибку:

Ошибка преобразования при преобразовании даты и / или времени из символа строка.

Я проверил данные, и 100% значений столбца соответствуют типу date. Как я могу изменить столбец на date тип?

Ответы [ 2 ]

2 голосов
/ 02 июня 2019

Я сделал простой тест, и он сработал:

create table #t (t varchar(10))
insert into #t values ('2001-08-18')

alter table #t alter column t date

Другой, с чем-то, похожим на дату, но не (получил тот же error, что и вы):

create table #tt (t varchar(10))
insert into #tt values ('2001-08-32')

alter table #tt alter column t date

У вас наверняка есть строка, содержащая varchar (10), который не конвертируется.Вы можете найти эти значения с помощью выбора, подобного этому:

select try_cast(yourColumn as date) as tryCastyourColumn,  yourColumn
from Yourtable
where try_cast(yourColumn as date) is null
0 голосов
/ 02 июня 2019

Я согласен с М. Канарковским, что ваши примеры кажутся хорошими, но вы, вероятно, что-то упускаете.Поскольку у вас есть версия 2017 года, запустите ее, чтобы проверить, что не так:

select END_DATE
from SourceTable1 
where END_DATE is not null and try_convert(date,END_DATE) is null
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...