管理层希望将数据库中的列从datetime2
更改为nvarchar
,基本上是存储日期字符串而不是日期和时间值。做这个的最好方式是什么?该列中已经有数据,因此我需要更改数据类型并将现有值转换为文本。
(我已经尝试过对此进行回退,但是它们的原因在这里并不重要)
答案 0 :(得分:3)
管理错误。日期/时间值应使用适当的数据类型存储。通常,将它们存储为字符串不是最佳实践。
但是,您可以轻松地做到这一点。实际上,您可以简单地执行以下操作:
alter table t alter datecol nvarchar(255);
如果您想要特定格式的数据,请在以后使用update
:
update t
set datecol = convert(nvarchar(255), convert(datetime2, datecol), ?);
注意:如果您只想从表中获取“漂亮”日期,请使用计算列:
alter table t add datecol_pretty as (convert(nvarchar(255), datecol, ?);
?
是您想要的转换格式。 (或使用format()
。)