我在源表(登台)中有data_as_of_daily_date列(数据类型为String),我需要根据Impala中的源表列找出“第一个月”的第一天,并将其加载到具有FIRST_DAY_OF_MONTH列(字符串类型)的目标表中。
源表:
+--------------------+
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 +
答案 0 :(得分:0)
除非更改格式,否则无需使用from_unixtime,unix_timestamp。
select DATE_SUB(data_as_of_daily_date,DAY(data_as_of_daily_date) - 1)
from table;