![](/img/trans.png)
[英]SQL Server ISDATE before conversion returns error “Conversion failed when converting date and/or time from character string”
[英]SQL Server: Conversion failed when converting time from character string
我在下面的一列具有数据类型char(24)
但是数据包含一个日期
我想将数据转换为datetime
以便可以像这样从过去的一个小时中选择数据:
Where CounterDateTime >= DateAdd(hour, -1, getDate())
但我不断出现错误:
从字符串转换日期和/或时间时转换失败
即使我将CounterDateTime
转换为datetime
。 请帮忙。
您可以像这样将列转换为日期时间:
Where CounterDateTime IS NOT NULL AND Cast(RTRIM(LTRIM(CounterDateTime)) as DateTime) >= DateAdd(hour, -1, getDate())
这也可以工作:
Where CounterDateTime IS NOT NULL AND CONVERT(datetime, RTRIM(LTRIM(CounterDateTime)), 121) >= DateAdd(hour, -1, getDate())
还有1个:
Where CounterDateTime IS NOT NULL AND try_parse(RTRIM(LTRIM(CounterDateTime)) as DateTime using 'en-US') >= DateAdd(hour, -1, getDate())
不要将日期/时间值存储为字符串。 这可能会导致问题。
下一个大问题是依靠隐式转换。 如果必须转换值,请明确进行转换。 所以:
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值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.