sql - SQL Server:从字符串转换时间时转换失败
问题描述
我在下面有一列具有数据类型char(24)
,但数据包含日期
我想将数据转换为,datetime
以便我可以像这样选择过去一小时的数据:
Where CounterDateTime >= DateAdd(hour, -1, getDate())
但我不断收到错误消息:
从字符串转换日期和/或时间时转换失败
即使我将我的转换CounterDateTime
为datetime
. 请帮忙。
解决方案
不要将日期/时间值存储为字符串。这可能会导致问题。
下一个大问题是依赖隐式转换。如果您必须转换值,请明确执行此操作。所以:
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 值。
推荐阅读
- haskell - writeTVar 的不安全版本
- java - 无法使用正则表达式将第一个字母更改为大写,其余为小写
- java - 如何修复递归函数的返回值*2错误
- c - 为什么 X11 在 _NET_ACTIVE_WINDOW 改变值的情况下会发送两个事件?
- c++ - 了解 C++ 标准的移动语义
- python - Django MPESA 与 C2B Till Number Payment 和 STK Push 集成
- python - 使用 reduceByKey() 后无法运行 collect
- go - 只有 1 个 pod 处理 Kubernetes 集群中的所有请求
- c# - C# Reflection - FieldInfo.GetValue 从另一个类中获取变量和值
- tensorflow - GPU 无法被 tensorflow-gpu 2.0 检测到