Преобразование к типу date
Есть скрипт в MS SQL
select dt_date,
CONVERT(date,
CONCAT(
SUBSTRING(replace(dt_bad_string,' year ','-'),0,6),
SUBSTRING(replace(dt_bad_string,' month ','-'),11,2),
SUBSTRING(replace(dt_bad_string,' day ',''),19,2)
)
)
from skill_events
для преобразования строки вида
2020 year 8 month 9 day
в тип date
2020-08-09
Сборка проходит без ошибки - получается вид 2020-8-9
При конвертации в date выдает ошибку
Msg 241 Level 16 State 1 Line 1
Conversion failed when converting date and/or time from character string
Ответы (1 шт):
Автор решения: Andrew Nikolaev
→ Ссылка
Я бы так сделал, вдруг пробелов может стать больше. Минуя substring и concat
DECLARE @dt_bad_string VARCHAR(255) = '2020 year 8 month 9 day'
SELECT CONVERT(VARCHAR, CONVERT(DATETIME, REPLACE(REPLACE(REPLACE(REPLACE(@dt_bad_string, 'year', '-'), 'month', '-'), 'day', ''), ' ', '')), 23)
Это тоже работает
DECLARE @dt_bad_string VARCHAR(255) = '2020 year 8 month 9 day'
SELECT CONVERT(DATE, REPLACE(REPLACE(REPLACE(REPLACE(@dt_bad_string, 'year', '-'), 'month', '-'), 'day', ''), ' ', ''))