簡體   English   中英

將列從日期轉換為日期時間

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM