Как обрабатывать ошибку преобразования даты в SQL?
поэтому я пытаюсь преобразовать строки в SQL databse в значения datetime.
у меня есть некоторые даты в таблице, как это:
23/12/2013 16:34:32
24/12/2013 07:53:44
24/12/2013 09:59:57
24/12/2013 12:57:14
24/12/2013 12:48:49
24/12/2013 13:04:17
24/12/2013 13:15:47
24/12/2013 13:21:02
24/12/2013 14:01:28
24/12/2013 14:02:22
24/12/2013 14:02:51
они хранятся в виде строк, к сожалению
и я хочу преобразовать их в datetime
SELECT CONVERT(datetime, analysed, 103 )
FROM OIL_SAMPLE_UPLOAD
однако я получаю это сообщение при запуске запроса
преобразование типа данных varchar в тип данных datetime привело в диапазону значение.
предположительно, потому что некоторые значения плохо сформированы (хотя я еще не заметил ни одного из них)
это нормально, если некоторые значения не преобразуются, мне просто нужен способ справиться с этой ситуацией.
что-то вроде ISNULL(CONVERT(datetime, analysed, 103 )) было бы хорошо, за исключением того, что функция convert не возвращает NULL при сбое.
3 ответов
для SQL Server можно использовать ISDATE () функция, чтобы проверить, является ли значение допустимой датой
SELECT CASE WHEN ISDATE(analysed)=1 THEN CONVERT(datetime, analysed, 103 )
ELSE '' END
FROM OIL_SAMPLE_UPLOAD
Если вы просто хотите даты, то взять SUBSTRING
и вычислить дату следующим образом. Это может дать вам правильную часть даты, по крайней мере.
SELECT CONVERT(datetime, SUBSTRING(analysed, 0, 11), 103 )
FROM OIL_SAMPLE_UPLOAD