Следующий запрос на конвертацию даты в Snowflake не работает - PullRequest
0 голосов
/ 23 декабря 2019

Столбец varchar в таблице содержит даты в формате «05/13/2019 20:48:13 PM». Он может содержать либо одну дату, либо несколько дат, соединенных с pipe |. Я использую этот запрос, чтобы получить самый первый запрос, и пытаюсь преобразовать его в метку времени.

Select (CASE WHEN  charindex('AM', COMPL_DATE)>=1 OR   charindex('PM', COMPL_DATE) >= 1
        THEN TO_TIMESTAMP ( SPLIT_PART( COMPL_DATE, '|' , 1), 'MM/DD/YYYY hh24:mi:ss AM')
        ELSE TO_TIMESTAMP ( SPLIT_PART( COMPL_DATE, '|' , 1), 'MM/DD/YYYY hh:mi:ss')
     END 
    ) from some_table.

Я получаю эту ошибку Не могу разобрать '03/23/2019 20:56:22 PM'как отметка времени в формате' ММ / ДД / ГГГГ чч24: ми: сс AM '.

Это не значит, что он не работает для всех строк. Есть несколько строк, для которых это не удается. Однако, когда я использую эти данные для отдельного запуска, вот так -

with tab as ( select  '03/23/2019 20:56:22 PM' COMPL_DATE from dual )
SELECT 
  (CASE WHEN  charindex('AM',COMPL_DATE)>=1 OR   charindex('PM',COMPL_DATE) >= 1
        THEN  TO_TIMESTAMP ( SPLIT_PART( COMPL_DATE, '|' , 1), 'MM/DD/YYYY hh:mi:ss AM')
        ELSE  TO_TIMESTAMP ( SPLIT_PART( COMPL_DATE, '|' , 1), 'MM/DD/YYYY hh24:mi:ss')
   END 
   ) result
FROM tab ;

Работает нормально.

Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 23 декабря 2019

Использование комбинации 24-часовых часов и AM / PM недопустимо:

'ММ / ДД / ГГГГ чч 24 : ми: сс AM '

HH24 - Two digits for hour (00 through 23); am/pm NOT allowed.

Попробуйте:' ММ / ДД / ГГГГ чч12: ми: сс AM '

0 голосов
/ 23 декабря 2019

Это может быть связано с дополнительными пробелами в строке даты. Я заметил, что веб-интерфейс не отображает лишние пробелы в сообщениях об ошибках, поэтому я свяжусь с командой разработчиков, чтобы исправить пробелы в результатах в веб-интерфейсе.

Вот пример запроса:

select  TO_TIMESTAMP ( '03/23/2019 20:56:22   PM', 'MM/DD/YYYY hh24:mi:ss AM');

Сообщение об ошибке, которое вы увидите в веб-интерфейсе:

Can't parse '03/23/2019 20:56:22 PM' as timestamp with format 'MM/DD/YYYY hh24:mi:ss AM'

Если вы выполните тот же запрос на CLI Snowflake, вы можете ясно увидеть ошибку:

PUBLIC>select  TO_TIMESTAMP ( '03/23/2019 20:56:22   PM', 'MM/DD/YYYY hh24:mi:ss AM');

100096 (22007): не удается разобрать '03 / 23/2019 20:56:22 PM 'как метку времени в формате' MM / DD / YYYY hh24: mi: ss AM '

ВозможноВы проверяете даты в своей колонке?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...