TRY_TO_DATE с шаблоном?

Snowflake имеет функцию TO_DATE (строка, шаблон), но в настоящее время не имеет версии функции TRY_TO_DATE с такой же подписью. Хотя мы создали функцию синтаксического анализа javascript в качестве обходного пути, она имеет ужасную производительность из-за ее сложности и того факта, что ее производительность никогда не может сравниться с реальной нативной функцией.

Есть ли план доступности такой встроенной функции? Есть ли доска для голосования сообщества, которая будет отдавать приоритет этой функции?


person Hugo Tremblay    schedule 01.05.2020    source источник
comment
В других базах данных, таких как SQL Server, есть функции, которые могут пытаться анализировать дату. Однако имейте в виду, что лучшим решением здесь может быть стандартизация данных даты в правильном формате.   -  person Tim Biegeleisen    schedule 01.05.2020
comment
Проблема в том, что мы не можем контролировать полученные данные; В целом нам нужно импортировать пару тысяч файлов. Некоторые из них относятся к внутренней системе, о которой мы можем вежливо попросить команду, обслуживающую систему, в то время как остальные относятся к внешним сторонним организациям, неизменяемым устаревшим материалам мэйнфреймов (слишком дорого, чтобы иметь настраиваемый экстракт для наших нужд) и т. Д. Итак, у нас нет выбор, кроме как иметь дело с этими датами на местном уровне. И снова у Snowflake есть функция to_date (строка, шаблон), а также try_to_date (строка). Я жалуюсь на отсутствие функции try_to_date (string, pattern).   -  person Hugo Tremblay    schedule 04.05.2020


Ответы (2)


Хотя для этой функции нет параметра, вы можете установить DATE_INPUT_FORMAT, чтобы принудительно использовать шаблон для функции TRY_TO_DATE:

ALTER SESSION SET DATE_INPUT_FORMAT = 'YYYY-MM-DD';
SELECT TRY_TO_DATE('2020-04-05'); -- will return a date value

ALTER SESSION SET DATE_INPUT_FORMAT = 'DD-MM-YYYY';
SELECT TRY_TO_DATE('2020-04-05'); -- will return NULL

https://docs.snowflake.com/en/sql-reference/parameters.html#date-input-format.

Вы можете использовать идеи снежинок, чтобы предлагать новые функции и голосовать за них:

https://community.snowflake.com/s/ideas

person Gokhan Atil    schedule 01.05.2020
comment
Позвольте мне поместить вещи в контекст: мы импортируем наш файл в промежуточную зону, и все, что там, преобразуется как строка. Затем мы перемещаем все на более удобный для бизнеса уровень, где выполняем правильный набор текста. Предлагаемый подход ограничит нас одним форматом даты для таблицы, что является слишком низким пределом для многих наших файлов. - person Hugo Tremblay; 01.05.2020

Примечания к выпуску - 3-6 августа 2020 г. < / а>

Функции TRY_TO_DATE (), TRY_TO_TIME () и TRY_TO_TIMESTAMP (): добавлена ​​поддержка для необязательного описателя формата

В этом выпуске семейства функций TRY_TO_DATE (), TRY_TO_TIME () и TRY_TO_TIMESTAMP () поддерживают необязательный спецификатор формата, аналогичный соответствующим функциям TO_DATE (), TO_TIME () и TO_TIMESTAMP ().


TRY_TO_DATE

Специальная версия TO_DATE, DATE, которая выполняет ту же операцию (т.е. преобразует входное выражение в дату), но с поддержкой обработки ошибок (т.е. если преобразование не может быть выполнено, оно возвращает значение NULL вместо того, чтобы вызывать ошибку).

Синтаксис

TRY_TO_DATE( <string_expr> [, <format> ] )
person Lukasz Szozda    schedule 08.08.2020