Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop Impala-从字符串日期算起的月份的第一个日期_Hadoop_Hive_Hiveql_Impala - Fatal编程技术网

Hadoop Impala-从字符串日期算起的月份的第一个日期

Hadoop Impala-从字符串日期算起的月份的第一个日期,hadoop,hive,hiveql,impala,Hadoop,Hive,Hiveql,Impala,我的源表(staging)中有列data_as_of_daily_date(数据类型字符串),我需要根据Impala中的源表列找出月份的第一个日期,并将其加载到具有列First_DAY_of_Month(字符串类型)的目标表中 源表: +--------------------+ data_as_of_daily_date +--------------------+ +20181217 + +20181115 + 我正在运行以下查询: SELECT

我的源表(staging)中有列data_as_of_daily_date(数据类型字符串),我需要根据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            +

除非更改格式,否则无需使用from_unixtime、unix_时间戳

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

此查询返回空值,是因为“每日”日期列的“数据”在暂存层中是字符串类型的吗。@下面的ASaraf date SUB(字符串日期,整数天)是我的查询,用于测试这一点,它返回空值作为输出select date SUB(每日日期的“数据”)-1,表名称中的数据为每日日期,其中数据为每日日期='20181217';从“20181217”中选择“DATE”作为“DAILY”日期中的“DATE”作为“DATE”日期的“DATE”,从“20181217”中选择“DATE”作为“SUB”(DATE)(DATE,DAY,DAY(DATE,DAILY)作为“DAILY”日期中的“DAILY”,从“20181217”中选择“DATE”,从“DATE”作为“DAILY”日期中的“DATE”作为“DATE”;1零20181217 2零20181217 3零20181217