2014-11-17 3 views
0

Я пытаюсь найти разницу между сегодняшней датой и значением, которое является конкатенацией значений mulitple, но начинается с 8-значной даты без дефиса или косые черты. Я считаю, что что-то не так с моим синтаксисом, но я еще недостаточно квалифицирован, чтобы понять, что я делаю неправильно. Вот то, что я до сих пор:Использование DateDiff(), чтобы найти разницу между getDate() и concatonated значением

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

Это возвращает следующее сообщение об ошибке: «Msg 241, уровень 16, состояние 1, строка 1 Конверсия удалось при преобразовании даты и/или времени из строки символов.»

+0

Какая ошибка вы получаете? Также, как выглядят 8-значные даты в вашей таблице? Являются ли они yyyymmdd, mmddyyyy и т. Д. ... – SQLChao

+0

JChao. Дата - YYYYMMDD, и ошибка, которую я получаю, добавлена ​​в сообщение. –

+0

Ну, очевидно, есть хотя бы одна строка, где 'batchid' не начинается с допустимой даты. Это лишь одна из многих причин, по которым мы указываем даты как даты, а не как часть некоторой строки. –

ответ

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()) 
+0

Спасибо, @JChao. Это действительно работает с другой таблицей, с которой я работаю. –

0

Не могли бы вы предоставить более подробную информацию. А именно, что такое batchid выглядит в форме 8 цифр? это YYYYMMDD или DDMMYYYY или MMDDYYYY?

Также вы можете показать нам результат следующего?

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

Sry для использования ответа у меня нет ответа, чтобы добавить комментарий непосредственно ниже.

+0

MADnoobie. Дата - YYYYMMDD, и при использовании запроса, который вы мне дали, он возвращает «Msg 241, Level 16, State 1, Line 1 Ошибка конверсии при преобразовании даты и/или времени из символьной строки». –

0

Это была ошибка. Я работал с другим столом и забыл, что бит-идентификатор не был одинаковым для обоих. Конкатенированный пакетныйID в таблице, в которой я разместил вопрос, не может быть преобразован в дату.