使用DateDiff()查找getDate()和concatonated值之间的差异

时间:2014-11-17 14:28:14

标签: sql sql-server concatenation datediff date-conversion

我试图找到今天的日期与多个值串联的值之间的差异,但是从没有任何破折号或正斜杠的8位数日期开始。我相信我的语法有问题,但我还不够熟练,看不出我做错了什么。以下是我到目前为止的情况:

select DateDiff(dd, (select MIN(CAST(Left(batchid, 8) as Date)) from
[Table]), getdate()) from [Table]

这将返回以下错误:“消息241,级别16,状态1,行1 从字符串转换日期和/或时间时转换失败。“

3 个答案:

答案 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发布了一个关于无法转换为日期的问题。