Impala-字符串日期中月份的第一个日期

时间:2019-01-11 14:54:04

标签: hadoop hive hiveql impala

我在源表(登台)中有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            +

1 个答案:

答案 0 :(得分:0)

除非更改格式,否则无需使用from_unixtime,unix_timestamp。

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