2014-09-18 15 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

当您遇到错误时,该记录中的日期值是什么? – David 2014-09-18 16:47:37

+0

这里是日期值'2014-16-09' – Cool1 2014-09-18 17:03:08

+0

'SELECT [Date],IsDate([Date])AS IsDate FROM FileHeader Where FinalName = @ FileName' – billinkc 2014-09-18 17:03:23

回答

0

发现一对括号缺少REPLACECHARINDEX。下面添加..

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 2014-09-18 17:13:24

+0

@ Cool1 ..你试过什么billinkc建议使用'SELECT [Date],IsDate([Date])AS IsDate FROM FileHeader Where FinalName = @ FileName'。返回的结果应该告诉你可能是什么原因造成的错误 – Tak 2014-09-18 17:18:31

+0

是月和日在错误的地方。谢谢 – Cool1 2014-09-18 19:14:08

相关问题