Impala上的错误状态请求

pprl5pva  于 2022-09-20  发布在  Impala
关注(0)|答案(1)|浏览(209)

请求37563的状态错误:TGetOperationStatusResp(status=TStatus(errorCode=None,错误消息=无,SQL状态=无,信息消息=无,状态代码=0),操作状态=5,错误消息=无,SQL状态=无,错误代码=无)

当我尝试运行以下查询时,我就面临着这个问题。

refresh sst_spot_quotes;
select
  case
    when maxrecordforSST >= hours_sub (CURRENT_TIMESTAMP(), 4) then ''
    else 'error'
  end as msg
from
  (
    select
      to_timestamp (
        CONCAT (
          max(rdate),
          MAX(
            CONCAT (
              LPAD (CAST(rhour as STRING), 2, '0'),
              ':',
              LPAD (CAST(rminute as STRING), 2, '0'),
              ':',
              LPAD (CAST(rsecond as STRING), 2, '0')
            )
          )
        ),
        'yyyy-mmm-ddhh:mm:ss'
      ) as maxrecordforSST
    from
      sst_spot_quotes
    where
      rdate >= days_sub (to_date (CURRENT_TIMESTAMP()), 1)
  ) a

有人能帮我解决这个错误吗?

vm0i2vca

vm0i2vca1#

日期格式必须为yyyy-MMM-ddhh:mm:ss。请注意,我把MMM写成了大写。你能换件衣服试一试吗?

另外,先得到最大值,然后再取to_Timestamp,这不是一个好主意,而是相反。因为在日期上计算最大值会给出正确的最大日期,而不是字符串。

您可以尝试一下下面的SQL。

select
  case
    when maxrecordforSST >= hours_sub (CURRENT_TIMESTAMP(), 4) then ''
    else 'error'
  end as msg
from
  (
    select
      MAX(to_timestamp (
        CONCAT (
          (rdate),
          (
            CONCAT (
              LPAD (CAST(rhour as STRING), 2, '0'),
              ':',
              LPAD (CAST(rminute as STRING), 2, '0'),
              ':',
              LPAD (CAST(rsecond as STRING), 2, '0')
            )
          )
        ),
        'yyyy-MMM-ddhh:mm:ss'
      )) as maxrecordforSST
    from
      sst_spot_quotes
    where
      rdate >= days_sub (to_date (CURRENT_TIMESTAMP()), 1)
  ) a

相关问题