2013-04-05 137 views
0

我試圖從文件名捕獲日期部分,並試圖將其轉換爲datetime數據類型。在SQL Server 2008日期時間varchar

SELECT CONVERT(Datetime, substring('EmployeeExcel_03312013',15,22), 120) 

獲得以下錯誤:

The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.

任何想法?請建議我是否缺少任何東西?

回答

0

有一個類似的帖子就在這裏:Convert varchar into datetime in SQL Server

爲了使它更簡單:

select convert(datetime, '03312013', 120) --produces error 

這表明CONVERT不知道做什麼用的字符串格式化的方式。

如果你把日期分成'03 -31-2013'(這是上面的鏈接)或類似的東西,你會很好。

4

您可以使用以下方法:

SELECT 
    convert(datetime, 
      right('EmployeeExcel_03312013', 4) 
      +substring('EmployeeExcel_03312013',15,4), 112) 

這將被轉換爲日期之前獲得的格式20130331值。

見​​

1

你可以給這個一去

DECLARE @Date char(8) 
set @Date=substring('EmployeeExcel_03312013',15,22) 
SELECT CONVERT(datetime,RIGHT(@Date,4)+LEFT(@Date,2)+SUBSTRING(@Date,3,2)) 

輸出:

----------------------- 
2013-03-31 00:00:00.000 

(1 row(s) affected) 

SQLFiddle Example

相關問題