Преобразовать строку в дату в T-SQL - PullRequest
0 голосов
/ 23 декабря 2009

Я пытаюсь преобразовать строку в дату в t-sql. Однако получите результаты, которые я не могу объяснить.

DECLARE @String as char(11)
DECLARE @TString as char(11)

SELECT @String = SUBSTRING([Flat File Source Error Output Column],1,CHARINDEX(',',[Flat File Source Error Output Column])-6)
FROM [ERROR].[Import_V2X]

SELECT @TString = '12/18/2009'

-- Check content before conversion
SELECT @TString as 'CheckTString'
SELECT @String as 'CheckString'

-- Convert the strings to date       
SELECT CONVERT(date,@TString,101) as 'ConvertSuccess'

SELECT CONVERT(date,@String,101) as 'ConvertFails'

[Столбец вывода ошибки источника плоского файла] определяется как текст в таблице

Это дает мне следующий результат:

CheckTString
------------
12/18/2009 

(1 row(s) affected)

CheckString
-----------

12/18/2009

(1 row(s) affected)

ConvertSuccess
--------------
2009-12-18

(1 row(s) affected)

ConvertFails
------------
Msg 241, Level 16, State 1, Line 16
Conversion failed when converting date and/or time from character string.

Кто-нибудь может объяснить мне, где проблема или откуда? Для меня строки выглядят точно так же: (

Ответы [ 3 ]

1 голос
/ 23 декабря 2009

Судя по вашему выводу, у вас есть перевод строки в переменной checkstring. Если это не просто ошибка копирования и вставки в вопросе, это приведет к ошибке, которую вы описываете. Смотри ниже

DECLARE @TString as char(11)


SELECT @TString = '
12/18/2009'

-- Check content before conversion
SELECT @TString as 'CheckTString'

-- Convert the strings to date       
SELECT CONVERT(date,@TString,101) as 'ConvertFails'

Дает следующие результаты.

(1 row(s) affected)
Msg 241, Level 16, State 1, Line 13
Conversion failed when converting date and/or time from character string.
1 голос
/ 23 декабря 2009

Если бы мне пришлось угадывать, это потому, что ваша импортированная строка имеет невидимый символ в конце строки, который не позволяет ее преобразовать. Ваша переменная - char (11), но длина строки «12/18/2009» составляет всего 10 символов, поэтому в конце остается место для еще 1 символа.

0 голосов
/ 23 декабря 2009

Похоже, что @CheckString потенциально имеет символ новой строки в начале.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...