Я хочу построить дату из года и месяца. В настоящее время я выполняю запрос, подобный следующему:
SELECT
yyyy_mm_dd AS
t.year,
t.month,
t.id,
t.name,
...,
...
...
FROM(
SELECT
p.last_yyyy_mm_dd,
p.id,
p.name,
FROM(
SELECT
t.*,
MAX(yyyy_mm_dd) OVER (PARTITION BY last_day(yyyy_mm_dd)) as last_yyyy_mm_dd
FROM
table1 t
WHERE
yyyy_mm_dd IS NOT NULL
AND name = 'XXX'
) p
WHERE
yyyy_mm_dd = last_yyyy_mm_dd
) p
RIGHT JOIN(
SELECT
YEAR(yyyy_mm_dd) as year,
MONTH(yyyy_mm_dd) as month,
id,
name,
...,
...,
...,
FROM
table2
WHERE
yyyy_mm_dd IS NOT NULL
AND name = 'XXX'
GROUP BY
1,2,3,4
) t
ON
p.id = t.id
AND YEAR(p.last_yyyy_mm_dd) = t.year
AND MONTH(p.last_yyyy_mm_dd) = t.month
На верхнем уровне выберите, я хотел бы также иметь поле даты (ГГГГ-ММ-ДД), построенное из года и месяца. Часть дня должна быть последним днем данного месяца. Т.е. за январь будет 31.
Я посмотрел здесь https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF -DateFunctions и могу увидеть last_day
, что может быть полезно, однако, похоже, что нет функция создания даты как в MySQL - https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html. Как я могу построить такую дату в Улей?