蜂巢获取每个月的结束日期
Posted
技术标签:
【中文标题】蜂巢获取每个月的结束日期【英文标题】:hive get each month end date 【发布时间】:2017-12-15 16:23:25 【问题描述】:我想要每个月的最后一个日期,例如 1 月 31 日、2 月 28 日等。 我在下面尝试了 current_date 并且它可以工作,但是当我使用我的日期列时它返回 null:
SELECT datediff(CONCAT(y, '-', (m + 1), '-', '01'), CONCAT(y, '-', m, '-', '01')) FROM
(SELECT
month(from_unixtime(unix_timestamp(C_date, 'yyyyMMdd'),'yyyy-MM-dd') ) as m,
year(from_unixtime(unix_timestamp(C_date, 'yyyyMMdd'),'yyyy-MM-dd') ) as y,
day(from_unixtime(unix_timestamp(C_date, 'yyyyMMdd'),'yyyy-MM-dd') )
from table2 ) t
返回:
_c0
NULL
SELECT
month(from_unixtime(unix_timestamp(C_date, 'yyyyMMdd'),'yyyy-MM-dd') ) as m,
year(from_unixtime(unix_timestamp(C_date, 'yyyyMMdd'),'yyyy-MM-dd') ) as y,
day(from_unixtime(unix_timestamp(C_date, 'yyyyMMdd'),'yyyy-MM-dd') )
from table2) t
返回:
m | y | _c2|
3 |2017| 21|
提前致谢。
【问题讨论】:
Find last day of a month in Hive的可能重复 select last_day(current_date) - 返回完整日期 2017-12-31 ,我只需要 31 所以除非我 substr 我不会得到 31 hive 中有日历实用程序,请尝试使用 hive UDF 函数 【参考方案1】:使用last_day()
和day()
函数:
hive> select day(last_day(current_date)) ;
OK
31
Time taken: 0.079 seconds, Fetched: 1 row(s)
在应用last_day()
之前应用to_date()
转换您的列。
【讨论】:
以上是关于蜂巢获取每个月的结束日期的主要内容,如果未能解决你的问题,请参考以下文章
给一个时间,获取这个月的结束的日期。比如 输入 ‘2018-08-04‘ 输出 ‘2018-08-31‘