将数据类型从varchar(int)修改为日期和时间



我认为SQL中有一列声明错误。它包含数据,我不希望丢失这些数据。我希望将定义从varchar(int)更改为日期和时间。我有一种印象,我不能只是改变专栏类型?

假设您询问的是SQL Server,只要SQL Server能够自动将该列中的所有数据转换为新类型,您就可以更改该列。

如果数据无法自动转换(因为它包含无效的日期和时间字符串),则需要执行以下操作:

  1. 创建一个日期时间数据类型之一的新列
  2. 将数据从旧列转换为新列
  3. 删除旧列
  4. 将新列重命名为旧列的名称

假设使用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

最新更新