2014-09-18 2 views
-1
DECLARE @Date DATE 
DECLARE @FileName VARCHAR(1000) 
DECLARE @FilePath VARCHAR(8000) 

SET @FilePath = 'S:\FFgh\ENG\dataload' 
SELECT @FileName = REVERSE(SUBSTRING(REVERSE([email protected],'.DAT','')),1,CHARINDEX '\',REVERSE(REPLACE(@FilePath,'.DAT','')))-1)) 

SELECT @Date = CAST(Date AS DATE) FROM FileHeader Where FinalName = @FileName 

SELECT CAST(@Date AS DATETIME) AS Date, @@ROWCOUNT AS HeaderFooter 

Вот мой код, если я использую имя файла вместо @FileName, он работает, иначе дает мне ошибку.Я получаю эту ошибку «Ошибка конверсии при преобразовании даты и/или времени из символьной строки».

+0

Когда вы сталкиваетесь с ошибкой, что такое значение 'Date' в этой записи? – David

+0

Вот дата Значение «2014-16-09» – Cool1

+0

'SELECT [Date], IsDate ([Date]) AS IsDate FROM FileHeader Где FinalName = @ FileName' – billinkc

ответ

0

Найдено двух скобок, отсутствующих на REPLACE и CHARINDEX. Добавлено ниже ..

DECLARE @Date DATE 
DECLARE @FileName VARCHAR(1000) 
DECLARE @FilePath VARCHAR(8000) 

SET @FilePath = 'S:\FFgh\ENG\dataload' 
SELECT @FileName = REVERSE(SUBSTRING(REVERSE(REPLACE(@FilePath,'.DAT','')),1,CHARINDEX ('\',REVERSE(REPLACE(@FilePath,'.DAT','')))-1)) 

SELECT @Date = CAST(Date AS DATE) FROM FileHeader Where FinalName = @FileName 

SELECT CAST(@Date AS DATETIME) AS Date, @@ROWCOUNT AS HeaderFooter 
+0

Спасибо, моя груша установила правильную строку. – Cool1

+0

@ Cool1 .. Вы попробовали, что billinkc предложило использовать 'SELECT [Date], IsDate ([Date]) AS IsDate FROM FileHeader Where FinalName = @ FileName'. Полученный результат должен дать вам информацию о том, что может быть причиной ошибки. – Tak

+0

Да, месяц и день пропали в неправильном месте. спасибо – Cool1

Смежные вопросы

 Смежные вопросы