Используя Google BIGQUERY, мне нужно проверить, что значения в столбце birth_day_col имеют правильный и желаемый формат даты: YYYY-MM-DD. Значения в этом столбце определены как STRING. Также значения в этом столбце в настоящее время имеют следующий формат: ГГГГ-ММ-ДД.
Я много исследовал в интернете и нашел интересный обходной путь. Следующий запрос:
SELECT
DISTINCT birth_day_col
FROM `project.dataset.datatable`
WHERE birth_day_col LIKE '[1-2][0-9][0-9][0-9]/[0-1][0-9]/[0-3][0-9]'
AND country_code = 'country1'
Но результат таков: «Этот запрос не дал результатов.»
Затем я проверил с помощью NOT, используя следующий код:
SELECT
DISTINCT birth_day_col
FROM `project.dataset.datatable`
WHERE NOT(birth_day_col LIKE '[1-2][0-9][0-9][0-9]/[0-1][0-9]/[0-3][0-9]')
AND country_code = 'country1'
Удивительно, но он дал все значения в birth_dat_col, которые я проверил и которые имеют правильный формат даты, но этот результат может очень сильно совпадать.
И очень странно (неправильно), что я использовал запрос, который должен приводить только к неверному формату дат, но на самом деле он дает мне правильные. Все в этих двух запросах похоже на изменение роли каждого из них.
Ожидаемым результатом любого запроса для этого бизнес-случая является подсчет всех неверно отформатированных дат (даже если в настоящее время это 0).
Спасибо за вашу помощь!
Роберт