Oracle: хотите преобразовать подстроку в пригодную для сортировки дату - PullRequest
1 голос
/ 09 апреля 2020

1-е сообщение go легко для меня.

Я использую эту подстроку, чтобы вытащить часть поля, я полагаю, эта дата, вероятно, не является стандартной (ddmmmyy) - как я могу улучшить эту команду так что я могу использовать это сортируемое поле даты, я предполагаю, что Cast, но понятия не имею о синтаксисе et c ??

SELECT SUBSTR(Host_Name,-9) as Decom_Date

Output

DECOM_DATE
31Oct2018
31May2018
31May2018
31Mar2017
31Jul2018

TIA

1 Ответ

3 голосов
/ 09 апреля 2020

Это именно то, для чего функция TO_DATE предназначена для:

SELECT TO_DATE(SUBSTR(Host_Name,-9), 'DDMonYYYY') as Decom_Date

Это не влияет на вас здесь, но имейте в виду, что oracle даты могут быть сохранены только до вторая точность. Кроме того, если у вас есть какие-либо мошеннические данные в таблице, которые не могут быть проанализированы как дата, вы получите «недопустимый ...» или «был найден ненумерованный c, где числовое значение c было ожидается».

Имейте в виду, что ваши строки здесь на английском языке sh, но синтаксический анализ MON (трехбуквенное название месяца) может быть регионально-контекстным, поэтому этот код может не работать на сервере с другим NLS; например, рассмотрите передачу 'NLS_DATE_LANGUAGE = American' в качестве третьего аргумента TO_DATE, если вы знаете, что ваши строки всегда будут Engli sh названия месяцев

...