вывод представляет собой комбинацию из двух столбцов и необходимо преобразовать в дату.Источник данных числовой.Код работает хорошо для первых 100 000, а ошибка возникает после 409 560.Ошибка как «Ошибка при преобразовании даты и / или времени из символьной строки».
SELECT
CASE WHEN LEN(OR6) = 6 THEN
CAST(CONCAT(SUBSTRING(CONVERT(VARCHAR(10),ORT),1,4),SUBSTRING(CONVERT(varchar(10),OR6),3,2),SUBSTRING(CONVERT(varchar(10),OR6),1,2))AS DATE)
WHEN LEN(OR6) = 5 THEN
CAST(CONCAT(SUBSTRING(CONVERT(VARCHAR(10),ORT),1,4),SUBSTRING(CONVERT(varchar(10),OR6),2,2),'0',SUBSTRING(CONVERT(varchar(10),OR6),1,1))AS DATE)
ELSE NULL
END AS ORI_MAT_DT ,DATE1 = OR6 ,DATE2 = ORT
FROM DATETABLE
Это исходная база данных:
ROW OR6 ORT
409,559 10611 2011152
409,560 50618 2018156
409,561 10615 2015152
409,562 50618 2018156
ОЖИДАЕМЫЙ РЕЗУЛЬТАТ:
ORI_MAT_DT DATE1 DATE2
2001-08-15 150801 2001227