Преобразование столбца из 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 - вы можете отключить его, если Вы предприимчивы: -)

enter image description here

отключите флажок там, и вы можете делать все, что хотите!


вы не можете изменить тип столбца на месте. Вам нужно создать новый столбец, скопировать значения, а затем удалить исходный столбец.

SQL Management Studio обычно выполняет это, создавая временную таблицу с новым именем столбца, копируя значения, удаляя исходную таблицу со старым столбцом, а затем переименовывая новую временную таблицу в новое имя. Часто это происходит так, что люди даже не осознают этого.

однако это может быть очень инвазивный подход, особенно если у вас уже есть много строк в таблице, поэтому вы можете просто написать сценарий SQL, добавить новый столбец в таблицу, скопировать значения, удалить исходный столбец, а затем использовать sp_rename, чтобы изменить новое временное имя столбца на исходное имя столбца. Это та же идея, что и SQL Management Studio, за исключением того, что они удаляют и воссоздают всю таблицу, а вы просто удаляете и воссоздаете колонна.

однако, если вы хотите, чтобы SQL Manangement Studio сделал это таким образом, вы можете отключить это сообщение об ошибке. Я считаю, что это было первоначально добавлено, потому что люди не wantdrop и воссоздать таблицу по умолчанию. Чтобы отключить это сообщение, перейдите к Сервис->Параметры-?Дизайнеры, и снять "запретить сохранение изменений, требующих повторного создания таблицы", тогда вы должны быть в состоянии сохранить изменения в конструкторе.

Prevent saving changes that require table re-creation