Попытка конвертировать дату столбца в mmddyyyy, когда она yyyymmdd, а в таблице с другими столбцами
У меня возникла проблема с преобразованием дат столбца в стандартный формат MMDDYYYY.
Например, у меня есть таблица с данными следующим образом:
ID | Date | Type |
----------------------------
1 | 20140308 | License |
2 | 20140308 | License |
3 | 48 | License |
Я хочу получить результат:
ID | Date | Type |
-------------------------------
1 | 3-8-2014 | License |
2 | 3-8-2014 | License |
3 | 48(not sure)| License |
Это возможно, когда у меня есть данные о мусоре, поступающие в систему? Я продолжаю получать такую ошибку, когда пытаюсь преобразовать даты в MMDDYYYY.
Msg 241, уровень 16, состояние 1, строка 1 Ошибка конверсии при конвертации дату и/или время от символьной строки. Внимание: значение NULL устраняются агрегатной или другой операцией SET.
Ответы
Ответ 1
Как насчет этого....
Данные тестирования
DECLARE @Table TABLE(ID INT,[Date] VARCHAR(8),[Type] VARCHAR(20))
INSERT INTO @Table VALUES
(1,'20140308','License'),
(2,'20140307','License'),
(3,'48' ,'License')
Query
SELECT ID
,CASE WHEN ISDATE([Date]) = 1
THEN CONVERT(VARCHAR(10), CAST([DATE] AS DATE), 110)
ELSE NULL END AS [Date]
,[Type]
FROM @Table
Набор результатов
╔════╦════════════╦═════════╗
║ ID ║ Date ║ Type ║
╠════╬════════════╬═════════╣
║ 1 ║ 03-08-2014 ║ License ║
║ 2 ║ 03-07-2014 ║ License ║
║ 3 ║ NULL ║ License ║
╚════╩════════════╩═════════╝