Преобразование столбца из Date в Datetime Sql Server
у меня есть столбец с именем Lastmodified
, с типом данных Date
, но это должно было быть DateTime
.
есть ли способ преобразования столбца?
когда я использую функцию "дизайн" SQL Server Management Studio, я получаю следующую ошибку:
сохранение изменений не допускается. Внесенные вами изменения требуют следующего таблица для удаления и повторного создания.
не очень заинтересован в том, чтобы уронить стол, я просто хочу знать, можно ли преобразовать столбец из Date
to Datetime
или мне придется удалить столбец и создать новый с правильным типом данных?
3 ответов
ему не нужно отбрасывать таблицу и воссоздавать ее, если этот столбец не участвует в одном или нескольких ограничениях.
вы можете просто сделать это с помощью SQL:
ALTER TABLE Tab ALTER COLUMN LastModified datetime2 not null
(Я выбрал datetime2
над datetime
, так как бывший рекомендуется для всех новых разработок, и так как столбец в настоящее время date
, Я знаю, что вы находитесь на SQL Server 2008 или более поздней версии)
Это просто параметр безопасности в SQL Server Mgmt Studio - вы можете отключить его, если Вы предприимчивы: -)
отключите флажок там, и вы можете делать все, что хотите!
вы не можете изменить тип столбца на месте. Вам нужно создать новый столбец, скопировать значения, а затем удалить исходный столбец.
SQL Management Studio обычно выполняет это, создавая временную таблицу с новым именем столбца, копируя значения, удаляя исходную таблицу со старым столбцом, а затем переименовывая новую временную таблицу в новое имя. Часто это происходит так, что люди даже не осознают этого.
однако это может быть очень инвазивный подход, особенно если у вас уже есть много строк в таблице, поэтому вы можете просто написать сценарий SQL, добавить новый столбец в таблицу, скопировать значения, удалить исходный столбец, а затем использовать sp_rename, чтобы изменить новое временное имя столбца на исходное имя столбца. Это та же идея, что и SQL Management Studio, за исключением того, что они удаляют и воссоздают всю таблицу, а вы просто удаляете и воссоздаете колонна.
однако, если вы хотите, чтобы SQL Manangement Studio сделал это таким образом, вы можете отключить это сообщение об ошибке. Я считаю, что это было первоначально добавлено, потому что люди не wantdrop и воссоздать таблицу по умолчанию. Чтобы отключить это сообщение, перейдите к Сервис->Параметры-?Дизайнеры, и снять "запретить сохранение изменений, требующих повторного создания таблицы", тогда вы должны быть в состоянии сохранить изменения в конструкторе.