我试图找到今天的日期与多个值串联的值之间的差异,但是从没有任何破折号或正斜杠的8位数日期开始。我相信我的语法有问题,但我还不够熟练,看不出我做错了什么。以下是我到目前为止的情况:
select DateDiff(dd, (select MIN(CAST(Left(batchid, 8) as Date)) from
[Table]), getdate()) from [Table]
这将返回以下错误:“消息241,级别16,状态1,行1 从字符串转换日期和/或时间时转换失败。“
答案 0 :(得分:1)
我认为您的数据中左侧8不是yyyymmdd格式的有效日期。您可以运行以下查询来查找它们
select batchid, isdate(Left(batchid, 8))
from [Table]
where isdate(Left(date, 8)) = 0
这是查询的正确语法。您的原始示例有一个额外的括号,我认为这是一个错字,因为您的错误似乎与数据相关。
select
datediff(dd, (select min(cast(left(batchid, 8) as date))
from [Table]), getdate())
答案 1 :(得分:0)
您能否提供更多详情。 也就是说,batchid在8位数形式中是什么样的?它是YYYYMMDD还是DDMMYYYY还是MMDDYYYY?
您也可以向我们展示以下结果吗?
select MIN(CAST(Left(batchid, 8) as Date)))
from [Table])
Sry使用答案,我没有代表直接在下面添加评论。
答案 2 :(得分:0)
这可能是错误的。我正在使用另一个表并且忘记了batchID对于两者都不一样。表中的连接batchID发布了一个关于无法转换为日期的问题。