将Varchar转换为Date类型(不仅仅是运行查询,而是实际更改表上的列)



这个问题被问了好几次,但我无法实现任何答案。

我有一个表,其中一列的日期已经创建为VARCHAR,我想把它转换为日期(103)。

我看到了以下几个回复:

SELECT CONVERT(VARCHAR(10), GETDATE(), 103) AS [DD/MM/YYYY]

这将很好地转换查询结果…但是我想转换实际列,而不仅仅是当我做一个选择查询。

我可能只是不明白把这行SQL代码放在哪里。有人能帮我吗?

没有DATE(103)这种东西;日期使用内部格式存储。我假设这是字符串的格式。

该怎么办?将字符串更改为可以隐式转换为日期的内容。然后更改列:

update t
set datecol = convert(date, datecol, 103);
alter t alter datecol date;

如果返回错误,您需要找出值没有正确转换的地方。这将使用:

select datecol
from t
where try_convert(date, datecol, 103) is null and
datecol is not null;

你需要弄清楚如何修复破碎的值。在这个过程中,学习一个不将日期/时间值存储为字符串的重要原因。

相关内容

  • 没有找到相关文章

最新更新