У меня есть строка вроде:
'SPY US 03/20/20 P45'
Я хочу выбрать только дату из строки.
Мой текущий запрос:
Select Ticker, SUBSTRING(Ticker, PATINDEX('%[0-9][0-9]/[0-9][0-9]/[0-9][0-9]%',o.Ticker),8) AS 'myDate' FROM TABLE
Это возвращает: 'SPY US 03/20/20 P45', 03/20/20
Я хочу, чтобы myDate был в datetime.
Я пробовал различные морфы преобразования и преобразования, но они терпят неудачу, предположительно, потому что они хотят, чтобы формат был в ГГГГ-ММ-ДД, а не ММ / ДД / ГГ.
Моя "самая умная" попытка конвертации была такой:
CONVERT(DATETIME, SUBSTRING(o.Ticker, PATINDEX('%[0-9][0-9]/[0-9][0-9]/[0-9][0-9]%',o.Ticker),8),1)
После прочтения рекомендаций по стилю здесь: https://www.w3schools.com/sql/func_sqlserver_convert.asp, но она все равно не удалась.
Идеальным конечным форматом для даты будет ГГГГ-ММ-ДД
Отредактировано, чтобы добавить:
Я возился с этим и понял, что я упростил мой вопрос. Преобразование работает, если я просто проверяю его на строке, но весь запрос включает несколько соединений.