【发布时间】:2016-10-10 15:43:07
【问题描述】:
我正在尝试将 varchar 中包含的日期与 where 子句中的 getdate() 进行比较。 varchar 变量始终如下所示:
最后上线时间:MM/DD/YY
一些样本数据:
Last Seen: 07/12/16
Last Seen: 08/01/16
Last Seen: 07/22/16
NULL
NULL
NULL
NULL
Last Seen: 07/28/16
将 varchar 转换为 datetime 并找到天差,如下所示:
datediff(day,CAST(substring(CA_NOTE, 12, 8) as datetime), getdate()) as dayspassed
问题是,当我将此编码粘贴在 where 子句中以将日期与 getdate() 进行比较时,我不断收到相同的错误。
where datediff(day,CAST(substring(CA_NOTE, 12, 8) as datetime), getdate()) > 90
Msg 241, Level 16, State 1, Line 3 转换时转换失败 字符串中的日期和/或时间。
我正在运行 SQL Server 2014 Management Studio。
已将 cmets 考虑在内
destination-data 使用 TRY_PARSE 的建议奏效了!谢谢大家。
【问题讨论】:
-
你能给我们一些样本数据吗?
-
感谢 cmets。 datediff(day,CAST(substring(CA_NOTE, 12, 8) as datetime), getdate()) > 90 给出与以前相同的错误消息。
-
...这意味着您现在有一个不同的问题。这个新版本看起来没问题,所以我会回到@GuidoG 和他的请求,展示一些我们可以使用的示例数据。
-
尝试改用TRY_PARSE。如果它返回任何空值,则该行无法转换。
-
目标数据,这行得通。谢谢!
标签: sql-server substring where