Ответ 1
Для SQL Server вы можете использовать функцию ISDATE(), чтобы проверить, действительно ли значение датировано
SELECT CASE WHEN ISDATE(analysed)=1 THEN CONVERT(datetime, analysed, 103 )
ELSE '' END
FROM OIL_SAMPLE_UPLOAD
Итак, я пытаюсь преобразовать строки в базу данных SQL в значения 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 в тип данных даты и времени в значении вне диапазона.
Предположительно, потому что некоторые значения плохо сформированы (хотя я еще не заметил ни одного из них)
Это нормально, если некоторые значения не конвертируются, мне просто нужен способ справиться с этой ситуацией.
Что-то вроде ISNULL (CONVERT (datetime, проанализировано, 103)) было бы хорошо, за исключением того, что функция преобразования не возвращает NULL, когда она терпит неудачу.
Для SQL Server вы можете использовать функцию ISDATE(), чтобы проверить, действительно ли значение датировано
SELECT CASE WHEN ISDATE(analysed)=1 THEN CONVERT(datetime, analysed, 103 )
ELSE '' END
FROM OIL_SAMPLE_UPLOAD
Вы можете использовать TRY_CONVERT или функции TRY_CAST
Если вам просто нужна часть даты, возьмите SUBSTRING
и вычислите дату следующим образом. По крайней мере, это может привести к правильной дате.
SELECT CONVERT(datetime, SUBSTRING(analysed, 0, 11), 103 )
FROM OIL_SAMPLE_UPLOAD