在SQL中更改列的DataType

时间:2015-11-16 13:37:38

标签: sql sql-server sql-server-2008

我的一个表架构中有一个DateTime(null)列为StartDate。 客户已经在其表格中输入了大量数据。 现在他们希望该列的类型为Character(10) 有可能吗?它不会损坏他们已输入的数据吗?这样做的安全方法是什么?

2 个答案:

答案 0 :(得分:2)

SELECT StartDate, CONVERT(CHAR, StartDate, 10) AS NEWOUTPUT
FROM yourtable

如果NEWOUTPUT列的结果没问题,那就继续..

alter table yourtable alter column StartDate char(10) not null;

答案 1 :(得分:1)

直接改变可能会导致麻烦。你需要

  1. 创建新列
  2. 更新您的表格,以便新列填充YEAR(datecolname) + '-' + MONTH(datecolname) + '-' + DAY(datecolname)
  3. 删除旧列
  4. 将新列重命名为旧名称
  5. 重新创建索引
  6. 但有一点是,如果您使用char而不是datetime和特定的sql语句(例如"之间的#34;),那么搜索特定日期的速度可能会慢一些。再也不会工作了。

    如果它就像你在评论中提到的那样,因为他们不想在一天中输入,那么更改他们必须输入日期以便将日期默认设置为1可能会更好。但是取决于有问题的申请。