我正在尝试将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
消息241,级别16,状态1,行3转换时转换失败 字符串的日期和/或时间。
我正在运行SQL Server 2014 Management Studio。
已编辑以考虑评论
destination-data建议使用TRY_PARSE工作!谢谢大家。
答案 0 :(得分:1)
SQL不知道如何处理var prop = SortField.Split('.').Aggregate((Expression)param, Expression.Property);
- 减去90天? 90分钟? 90年?
您需要使用getdate()-90
等功能,例如
dateadd
答案 1 :(得分:1)
问题是您仍然将其转换为where convert(varchar(30),cast(substring(CA_NOTE, 12, 8) as datetime),102) < dateadd(dd, -90, getdate())
。试试这个:
VARCHAR