Как настроить функцию «Снежинка», чтобы получить дату с ошибкой, которую она не может проанализировать? - PullRequest
0 голосов
/ 18 октября 2019

Я пытаюсь преобразовать числа в этом формате 1180106 в даты.

Мне удалось выполнить следующий запрос, чтобы получить формат ГГГГММДД до сегодняшнего дня:

TO_DATE(1900 + LEFT(A.ODT_ENTERED_DATE, 3) || SUBSTR(A.ODT_ENTERED_DATE, 4, 4), 'YYYYMMDD')

Внутренний запрос создает число, подобное этому: 2018.000000106 Но тогда функция TO_DATEне может создать дату из этого. Я ожидаю 20180106

Вместо этого я получаю следующую ошибку:

Can't parse '2018.000000106' as date with format 'YYYYMMDD'

1 Ответ

1 голос
/ 19 октября 2019

Если вы просто запустите:

select 1900 + LEFT(A.ODT_ENTERED_DATE, 3) 

, это вернет результат в виде varchar, где возвращенный результат: 2018.00000

Приведение к числу любым из следующих способовдолжен дать вам ожидаемый результат:

select TO_DATE(1900 + TO_NUMBER(LEFT(1180106, 3))|| SUBSTR(1180106, 4, 4), 'YYYYMMDD')

или

SELECT TO_DATE((1900 + (LEFT(1180106, 3))) :: number || SUBSTR(1180106, 4, 4), 'YYYYMMDD')
...