【问题标题】:How to get previous month from 'yyyy-MM' date format in Hive如何从 Hive 中的“yyyy-MM”日期格式获取上个月
【发布时间】:2021-09-13 07:58:03
【问题描述】:

我想从 Hive 中的 'yyyy-MM' 格式值中获取上个月。我尝试使用 'add_months' 但无法获得。

select add_months('2021-06', -1)

例如:我有一个值为“2021-06”的字符串列,现在我想将输出显示为“2021-05”。

请帮忙。

【问题讨论】:

    标签: sql date hive hiveql


    【解决方案1】:

    通过连接'-01'add_months 将您的字符串转换为日期,使用date_format 得到yyyy-MM

    select date_format(add_months(concat('2021-06','-01'), -1),'yyyy-MM')
    

    结果:

    2021-05
    

    另一种方法(使用substr 而不是date_format):

    select substr(add_months(concat('2021-06','-01'), -1),1,7) --returns 2021-05
    

    【讨论】:

    • 当我在配置单元查询中替换列名而不是 '2021-06' 值时,我没有得到输出,即 year_month=date_format(add_months(concat(year_month,'-01'), -1 ),'yyyy-MM')
    • @leftjoin,我们在我的专栏中除了 2021-06 之外没有任何其他字符。我尝试了这两种方法,但没有得到输出。请找到我的完整查询。 select * from db.test where year_month=date_format(add_months(concat(year_month,'-01'), -1),'yyyy-MM'); select * from db.test where year_month=substr(add_months(concat(year_month,'-01'), -1),1,7);
    • @leftjoin,感谢您的帮助!!
    猜你喜欢
    • 2021-06-02
    • 2015-11-18
    • 2018-10-14
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多