HIVE选择与Concat无法正常工作

时间:2018-06-04 17:57:35

标签: hive hiveql

我有这个查询

SELECT
  CASE WHEN (enddate is NULL) THEN "Current" ELSE CONCAT(
    to_date(from_unixtime(startdate * 24 * 60 * 60)),
    ' - ',
    to_date(from_unixtime(enddate * 24 * 60 * 60))
  ) END as Current
FROM
  table

我收到此错误cannot recognize input near 'as' 'Current' ',' in selection target但是当我取出as Current时,它有效。我只是想改变列名,而不是显示_c1或类似的东西。

2 个答案:

答案 0 :(得分:0)

Current是Hive中的关键字,您需要更改别名或使用graves(`)声明它,如下所示

SELECT
CASE WHEN (enddate is NULL) THEN "Current" ELSE CONCAT(
to_date(from_unixtime(12 * 24 * 60 * 60)),
' - ',
to_date(from_unixtime(12 * 24 * 60 * 60))
) END as `Current`
from ...

答案 1 :(得分:0)

当前是hive中的保留关键字,因此如果您有任何列名与hive中的任何保留关键字匹配,那么您需要用``(后退)来包围该列