Impala EOMONTH 等效

Posted

技术标签:

【中文标题】Impala EOMONTH 等效【英文标题】:Impala EOMONTH equivalent 【发布时间】:2019-02-20 15:39:09 【问题描述】:

我的问题是 EOMONTH 似乎在 Impala 中不存在,所以我希望有一个 EOMONTH 的替代品。我只想返回与月末日期相对应的值。以下是我尝试过的查询,最后一行是我遇到问题的地方。

SELECT a.ticker,a.FieldName,a.DataSource,b.tickervalue, 
to_timestamp(CAST(tickervaluedate/1000 as bigint)) as tickervaluedate
FROM agronomycn.raw_crttickername AS a 
INNER JOIN agronomycn.raw_crttickervalue as b on a.TickerID = b.TickerID
WHERE a.ticker = 'C_FRONT2' AND a.fieldname = 'CLOSE' AND a.datasource = 'EXCH'
AND to_timestamp(CAST(b.tickervaluedate/1000 as BIGINT)) BETWEEN '2010-01- 01' AND '2019-01-01' 
AND to_timestamp(CAST(b.tickervaluedate/1000 as BIGINT)) = EOMONTH(to_timestamp(CAST(b.tickervaluedate/1000 as BIGINT)))

【问题讨论】:

【参考方案1】:

这可以通过truncadd_monthsdate_add 的组合来完成。

select date_add(add_months(trunc(dtCol,'MM'),1),-1)

假设日期的字符串格式为yyyy-MM-ddyyyy-MM-dd HH:mm:ss

【讨论】:

所以当我将最后一行更改为 AND to_timestamp(CAST(b.tickervaluedate/1000 as BIGINT)) = date_add(add_months(trunc(to_timestamp(CAST(b.tickervaluedate/1000 as BIGINT)) ,'MM'),1),-1),我没有检索任何值,所以我假设我用错了 格式是时间戳,但原始格式是 unixtime ticker fieldname datasource tickervalue tickervaluedate ticker fieldname datasource tickervalue tickervaluedate 1 C_FRONT2 CLOSE EXCH 382.25 2018-11-12 06:00:00 2 C_FRONT2 CLOSE EXCH 377.75 2018-11-13 06:00:00跨度> 只需使用date_add(add_months(trunc(b.tickervaluedate,'MM'),1),-1) 获取月末日期。 是的,它返回月底日期,但我只想查看日期为月底日期的值,例如日期为 2018-12-31、2018-11-30 等的值。跨度>

以上是关于Impala EOMONTH 等效的主要内容,如果未能解决你的问题,请参考以下文章

将 Impala 命令迁移到 Hive

在 Apache Impala 中实现 Oracle 的 rownum()

相当于 Impala 中 Hive 的 date_format 函数?

什么是impala,如何安装使用Impala

什么是impala,如何安装使用Impala

什么是impala,如何安装使用Impala