Импала - первая дата месяца с даты строки - PullRequest
0 голосов
/ 11 января 2019

У меня есть столбец data_as_of_daily_date (тип данных String) в моей исходной таблице (подготовка), и мне нужно найти первую дату месяца на основе столбца исходной таблицы в Impala и загрузить ее в целевую таблицу, имеющую столбец FIRST_DAY_OF_MONTH (тип String).

Исходная таблица:

+--------------------+
data_as_of_daily_date
+--------------------+
+20181217            +
+20181115            +

Я выполняю запрос ниже:

SELECT 
      DATE_ADD(FROM_UNIXTIME(UNIX_TIMESTAMP(DATA_AS_OF_DAILY_DATE, 'yyyyMMdd')), 1 - DAY(FROM_UNIXTIME(UNIX_TIMESTAMP(DATA_AS_OF_DAILY_DATE, 'yyyyMMdd')))) AS FIRST_DAY_OF_MONTH
FROM TABLE;

Выход:

+--------------------+
AS FIRST_DAY_OF_MONTH
+--------------------+
+2018-12-01 00:00:00 +
+2018-11-01 00:00:00 +

Ожидаемый результат:

+--------------------+
AS FIRST_DAY_OF_MONTH
+--------------------+
+20181201            +
+20181101            +

1 Ответ

0 голосов
/ 11 января 2019

Нет необходимости использовать from_unixtime, unix_timestamp, если вы не меняете формат.

select DATE_SUB(data_as_of_daily_date,DAY(data_as_of_daily_date) - 1) 
from table;
...