[英]Convert Column from Date to Datetime
我有一個名為Lastmodified
的列,數據類型為Date
,但它應該是DateTime
。
有沒有辦法轉換列?
當我使用 SQL Server Management Studio 的“設計”功能時,出現以下錯誤:
不允許保存更改。 您所做的更改需要刪除並重新創建下表。
對刪除表並不真正感興趣,我只是想知道是否可以將列從Date
轉換為Date
Datetime
還是必須刪除該列並創建一個具有正確數據類型的新列?
它不需要刪除表並重新創建它,除非該列參與一個或多個約束。
您可以使用 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 這樣做,您可以關閉該錯誤消息。 我相信它最初是因為人們不想刪除並默認重新創建表而添加的。 要關閉此消息,請轉到Tools->Options-?Designers ,然后取消選中“防止保存需要重新創建表的更改” ,然后您應該能夠在設計器中保存您的更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.