T-SQL: преобразовать столбец даты varchar в тип даты - PullRequest
5 голосов
/ 28 апреля 2011

У меня есть следующий столбец date в базе данных SQL Server.

Тип данных в настоящее время varchar, а даты хранятся в следующем формате: 2010-04-24

Я запускаю следующую команду:

ALTER TABLE games ALTER COLUMN date date

Но я получаю следующую ошибку:

ОШИБКА: преобразование не выполнено при преобразовании даты и / или времени из строки символов.

Что я делаю не так?

1 Ответ

7 голосов
/ 28 апреля 2011

Там может быть несколько дат, которые не работают.Какую версию SQL Server вы используете?2008 Я полагаю, если у вас есть DATE тип данных - верно?

Мое предложение будет:

1) Создать новый столбец типа DATE

ALTER TABLE dbo.Games
   ADD NewDate DATE

2) Запустите сценарий обновления для своей таблицы и посмотрите, какие записи могут не преобразовываться в DATE

UPDATE dbo.Games
SET NewDate = CAST([date] AS DATE)
WHERE ISDATE([date]) = 1

Проверка для ISDATE() = 1 должна отфильтровывать те записи, которые не могут быть преобразованы в DATE datatype.

Как только все ваши записи были успешно преобразованы, вы всегда можете удалить старый столбец [date] и переименовать новый столбец обратно в [date] - но используя зарезервированное слово, например DATE, дляимя столбца не очень умное - я бы попытался использовать что-то более выразительное, более выразительное (относящееся к проблемной области, в которой вы находитесь).

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