这个问题被问了好几次,但我无法实现任何答案。
我有一个表,其中一列的日期已经创建为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;
你需要弄清楚如何修复破碎的值。在这个过程中,学习一个不将日期/时间值存储为字符串的重要原因。