преобразование типа sql - PullRequest
       5

преобразование типа sql

0 голосов
/ 06 сентября 2018

У меня есть столбец с документацией в формате ГГГГММДД и типа данных nvarchar. Я хочу изменить тип данных на datetime и обновить имя столбца exdatedocumented и изменить таблицу с помощью ALTER. Может кто-нибудь помочь в этом. Я пробовал что-то вроде этого

update dbo.table2
set [DateDocumented] = convert(datetime,CAST([DateDocumented] as datetime),130)

Я получил ошибку

Msg 242, Level 16, State 3, Line 1
The conversion of a nvarchar data type to a datetime data type resulted in an out-of-range value.
The statement has been terminated

.

Ответы [ 3 ]

0 голосов
/ 06 сентября 2018

Вы можете просто изменить тип столбца:

alter dbo.table2 alter column DateDocumented datetime;

Ваша колонка имеет формат, подходящий для конвертации. Если вы хотите использовать вместо этого форматы по умолчанию, просто выполните:

update table dbo.table2
    set [DateDocumented] = convert(datetime, CAST([DateDocumented] as datetime));

Это также должно позволить преобразовать столбец в datetime.

0 голосов
/ 06 сентября 2018

Кажется, у нас здесь две вещи. Изменение типа для столбца. И изменение названия для столбца. Попробуем сохранить это отдельно, чтобы не путать вещи. Я сообщу об изменении типа (с varchar на datetime):

Прежде всего: почему дата и время? Зачем записывать datetime2 (с любыми долями секунд, которые вы хотите, например datetime2 (0))? Новые типы для даты и времени существуют уже 10 лет!

Во всяком случае, у вас, очевидно, есть значения в вашей таблице, которые не являются действительными датами! Первое, что вам нужно сделать, это найти эти строки и обработать их. Допустим, вы измените на datetime2 (0), если нет, то вместо этого просто перейдите на datetime:

SELECT * 
FROM dbo.Table2
WHERE TRY_CAST(DateDocumented AS datetime2(0)) IS NULL
0 голосов
/ 06 сентября 2018

1-й изменить это имя столбца, а затем изменить таблицу

sp_RENAME 'dbo.table2.datedocumented', 'exdatedocumented' , 'COLUMN'
go
ALTER TABLE dbo.table2
ALTER COLUMN exdatedocumented datetime; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...