Date 在配置单元中将dd/mm/yyyy/hh/mm/ss格式更改为yyyymm

Date 在配置单元中将dd/mm/yyyy/hh/mm/ss格式更改为yyyymm,date,hive,timestamp,hiveql,impala,Date,Hive,Timestamp,Hiveql,Impala,我现在正在用蜂箱。我有一列(a列)字符串,格式如下11/9/2009 0:00:00。我想提取yyyyym。i、 e.我希望上面的字符串是200909。我试过两种不同的方法,但都不管用 我尝试使用两种不同的方法转换字符串 concat(year(Column A),lpad(month(Column A),2,0)) convert(datetime, Column A) 对于我接收到的第一行代码:所有行中为NULL 对于我收到的第二个: 遇到:DATETIME

我现在正在用蜂箱。我有一列(a列)字符串,格式如下
11/9/2009 0:00:00
。我想提取
yyyyym
。i、 e.我希望上面的字符串是
200909
。我试过两种不同的方法,但都不管用

我尝试使用两种不同的方法转换字符串

       concat(year(Column A),lpad(month(Column A),2,0))


       convert(datetime, Column A)
对于我接收到的第一行代码:所有行中为NULL

对于我收到的第二个:

遇到:DATETIME应为:全部、大小写、强制转换、默认、不同、, EXISTS、FALSE、IF、INTERVAL、NOT、NULL、REPLACE、TRUNCATE、TRUE、, 由以下原因导致的标识符:异常:语法错误

使用
unix\u时间戳(字符串日期、字符串模式)
转换为从1970-01-01经过的秒数。然后使用from_unixtime()转换为:

结果:

200909
阅读:和

还有一个解决方案在Hive中工作:

select  concat(regexp_extract('11/9/2009 0:00:00','(\\d{1,2})/(\\d{1,2})/(\\d{4})',3),lpad(regexp_extract('11/9/2009 0:00:00','(\\d{1,2})/(\\d{1,2})/(\\d{4})',2),2,0))

由于我正在尝试将字符串转换为YYYYMM,因此我必须使用以下代码,这对我很有用:

      'concat(substr(Column A, instr(Column A, ' ')-4, 4),substr(Column A, instr(Column A, ' /')+1, 2))' 

因为它是一个字符串,而不是日期戳,所以上面的操作将不起作用。@Yags我无法检查黑斑羚。这在Hive@leftjoin'11/9/2009 0:00:00'、'dd/MM/yyyy HH:MM:ss'中绝对有效。这是我的数据集中的一个字符串。因此,结果为空。和你的一样,这是DateTime第二个很好用。此外,我下面的解决方案也会产生相同的输出。谢谢@leftjoin
      'concat(substr(Column A, instr(Column A, ' ')-4, 4),substr(Column A, instr(Column A, ' /')+1, 2))'