我认为SQL中有一列声明错误。它包含数据,我不希望丢失这些数据。我希望将定义从varchar(int)更改为日期和时间。我有一种印象,我不能只是改变专栏类型?
假设您询问的是SQL Server,只要SQL Server能够自动将该列中的所有数据转换为新类型,您就可以更改该列。
如果数据无法自动转换(因为它包含无效的日期和时间字符串),则需要执行以下操作:
- 创建一个日期时间数据类型之一的新列
- 将数据从旧列转换为新列
- 删除旧列
- 将新列重命名为旧列的名称
假设使用SQL服务器RDBMS,请确保备份该表。
ALTER TABLE dbo.YourTable
ALTER COLUMN YourColumnName datetime
试试这个,它只是一个例子:
Alter Table testing
Add some_dt DateTime Default('1900-01-01') NOT NULL
GO
Update testing
Set some_dt = Convert(DateTime,Tmp_some_dt)
GO
Alter Table testing
DROP Column Tmp_some_dt
GO
select * from testing
go