首页 > 解决方案 > SQL Server:从字符串转换时间时转换失败

问题描述

我在下面有一列具有数据类型char(24),但数据包含日期

我想将数据转换为,datetime以便我可以像这样选择过去一小时的数据:

Where CounterDateTime   >= DateAdd(hour, -1, getDate())

但我不断收到错误消息:

从字符串转换日期和/或时间时转换失败

即使我将我的转换CounterDateTimedatetime. 请帮忙。

标签: sqlsql-serverdatetime

解决方案


不要将日期/时间值存储为字符串。这可能会导致问题。

下一个大问题是依赖隐式转换。如果您必须转换值,请明确执行此操作。所以:

Where try_convert(datetime, CounterDateTime) >= DateAdd(hour, -1, getDate())

您显然有无法转换的值。你不知道为什么。您可以使用查询找到这些值:

select CounterDateTime
from t
where try_convert(datetime, CounterDateTime) is null and
      CounterDateTime is not null;

这将返回无法转换的非 NULL 值。


推荐阅读