# #sql #google-bigquery
#sql #google-bigquery
Вопрос:
Я работаю над фильтрованием записей, с которыми не связаны действительные даты. Ожидаемое-это строка формата yyyymmddhhmmss
. Как я могу проверить, что строка на самом деле является действительной датой? Например, входная строка может быть: 202101....##
(недопустимые литералы)
Ответ №1:
Вы можете использовать safe.parse_datetime('%Y%m%d%H%M%S', col_string) as col_datetime
— если col_string
представляет допустимую дату и время — он выведет эту допустимую дату и время, в противном случае — null, как в приведенном ниже примере
with your_table as ( select '20211215031521' col_string union all select '20211215031521Y' union all select '202112150H1521' ) select col_string, safe.parse_datetime('%Y%m%d%H%M%S', col_string) as col_datetime from your_table
с выходом
Ответ №2:
Хотел бы фильтр, как …
WHERE SAFE_CAST (datestring AS DATE) IS NOT NULL
послужит вашей цели?