2013-03-19 2 views
0

Теперь я знаю, что этот вопрос задан несколько раз, и я прошел десятки ответов, но ничего не работает для меня .. Я пытаюсь преобразовать строку в datetime в SQL, но получаю следующее сообщение об ошибке:Преобразование строки в DateTime в SQL

Arithmetic overflow error converting expression to data type datetime. 

Это запрос, я пытаюсь запустить:

SELECT MessageText, 
     CONVERT(datetime,SUBSTRING(MessageText, CHARINDEX('(', MessageText)+1,     
     CHARINDEX(')', MessageText) - 
     CHARINDEX('(', MessageText)-1)) AS TourTimeStamp, 
     TIMESTAMP 
FROM tblMessageLog 
WHERE MessageText LIKE 'Tour run timestamp%for tour%has been%' 
ORDER BY TIMESTAMP DESC 

Так, в MessageText, есть отметка времени, что я ищу (столбец TimeStamp на самом деле является только отметкой времени записи messagelog ...) и Я могу получить это с помощью подстроки.

Формат этой подстроки (TourTimeStamp): dd/mm/yyy hh:mm:ss, например. 25/02/2012 20:55:13

Любая помощь была бы принята с благодарностью.

+0

Не могли бы вы включить результат этого «ПОДЪЕМА»? –

+1

Что это за база данных? – MarcinJuraszek

+0

Grzegorz W - я отредактировал вопрос, чтобы быть более ясным; формат даты, о которой я упоминал, является подстрокой, которую я получаю. Поэтому я могу успешно получить дату из поля MessageText, но в настоящее время она находится в формате String! – Kyle

ответ

0

Я предполагаю, что это MS SQL Server.

Вы должны указать формат: Попробуйте это:

Select 
    MessageText, 
    CONVERT(
    datetime, 
    SUBSTRING(
     MessageText, 
     CHARINDEX('(', MessageText) + 1, 
     CHARINDEX(')', MessageText) - CHARINDEX('(', MessageText) - 1), 
    103) 
    AS TourTimeStamp, 
    Timestamp 
FROM 
    tblMessageLog 
WHERE 
    MessageText LIKE 'Tour run timestamp%for tour%has been%' 
ORDER BY TimeStamp DESC 

Рекомендуем также look here for list of supported formats.

+0

Привет, это работает! Я просто предположил, что стиль 103 DateTime определяется как dd/mm/yyyy, он сократит время (т. Е. Нет hh: mm: ss), и когда я попробовал, он не работал сначала, но это должно было быть из-за другой ошибки где-то ... Большое спасибо! – Kyle

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