#hadoop #hive #hiveql
Вопрос:
У меня есть таблица улья (table_1). В этой таблице один из столбцов называется «дата». Значения в этом столбце имеют тип «строка» и формат «ггггММдд» (например: 20210102). Я пытаюсь получить количество(*) записей диапазона дат в этом столбце.
Пример: выберите количество(*) из таблицы 1, где дата МЕЖДУ 20210101 И 20210301. Теперь это не будет работать, так как этот столбец имеет тип «строка». Нужна помощь в запросе версии ДАТЫ этого столбца.
Комментарии:
1. Почему вы не можете проанализировать строку в тип даты, который поддерживает
BETWEEN
другие типы дат?2. В качестве альтернативы,
WHERE date BETWEEN '20210101' AND '20210301'
должно хорошо работать дляyyyyMMdd
форматированных значений (вам нужны кавычки)3. Я предпочитаю разыгрывать их сам, чем доверять улью, поэтому, пожалуйста, используйте — выберите количество(*) из таблицы_1, где разыгрывается(
date
как BIGINT) МЕЖДУ 20210101 И 202103014. Если вопрос в том, как преобразовать в дату: ` дата(regexp_replace(date_col,’^(\d{4})(\d{2})(\d{2})$’,’$1-$2-$3′))` Но только для фильтрации вам не нужно никакого преобразования, просто замените свои числа теми же строками — заключите в кавычки, и это будет работать нормально