在SQL Server 2012中将varchar值转换为datetime



在我的导入表中,我定义了以下列:

LFZ_begin VARCHAR(50) NULL

现在,当我尝试将视图中的列定义为DATETIME并在SSMS中调用该视图时,我得到以下错误消息:

varchar数据类型转换为datetime数据类型导致值超出范围

在我看来,该列定义如下:

CONVERT(VARCHAR(50), CONVERT(DATETIME, LFZ_begin, 120)) AS LFZ_begin,

我需要期望这样的结果值:2020-09-04 00:00:0000

有人对这个问题有想法吗?

您应该修复数据模型,并且永远不要将日期/时间值存储为字符串。同时,您可以使用try_函数修复视图:

TRY_CONVERT(VARCHAR(50), TRY_CONVERT(DATETIME, LFZ_begin, 120)) AS LFZ_begin,

注意:这将消除格式化无效列的错误。它是否返回有效值取决于数据——而且您没有显示任何样本数据,因此无法建议解决潜在问题的方法

最新更新