• hive日期函数-Demo(二)


    需求:某资产近一个月的资产值

    比如:今天是2018年2月28日,近一个月若是按照自然月来算,那么是2018年2月1日至2018年2月28日。最终需要的日期格式为:yyyyMMdd。

    当日时间戳

    unix_timestamp() 方法可得到当前时间的时间戳。

    上月今日

    使用 add_months(日期,N) 函数可将日期往前、往后推N个月。主要有两种格式:
    add_months(‘yyyy-MM-dd hh:mm:ss’,N),add_months(‘yyyy-MM-dd’,N)。N为正往后推,N为负往前推。例如:

    hive> select add_months('2018-02-28', 3);
    OK
    2018-05-31
    Time taken: 0.127 seconds, Fetched: 1 row(s)
    hive> select add_months('2018-02-28', -3);
    OK
    2017-11-30
    Time taken: 0.084 seconds, Fetched: 1 row(s)

    时间戳格式化

    由于add_months()方法的入参“日期”不能直接使用时间戳,需做一下转化。转化函数为:from_unixtime(时间戳, 日期、时间)。表现形式主要有:from_unixtime(时间戳, “yyyy-MM-dd hh:mm:ss”),from_unixtime(时间戳, “yyyy-MM-dd “)。如下:

    hive> select from_unixtime(1519818348, 'yyyy-MM-dd');
    OK
    2018-02-28
    Time taken: 0.088 seconds, Fetched: 1 row(s)
    hive> select from_unixtime(1519818348, 'yyyy-MM-dd hh:mm:ss');
    OK
    2018-02-28 07:45:48
    Time taken: 0.089 seconds, Fetched: 1 row(s)

    往后一日

    根据需求,当前日期往前推一个月后,还需往后推一日。往前、往后推N个日的函数为:date_add(日期,N)。主要有两种转换格式:date_add(‘yyyy-MM-dd hh:mm:ss’,N),date_add(‘yyyy-MM-dd’,N)。N为正往后推,N为负往前推。如下:

    hive> select date_add('2018-02-28', 3);
    OK
    2018-03-03
    Time taken: 0.089 seconds, Fetched: 1 row(s)
    hive> select date_add('2018-02-28', -3);
    OK
    2018-02-25
    Time taken: 0.085 seconds, Fetched: 1 row(s)

    最终结果是:

    from_unixtime(unix_timestamp(concat(date_add(add_months(from_unixtime(unix_timestamp(),'yyyy-MM-dd hh:mm:ss'),-1),1),' 10:10:10')), 'yyyyMMdd')

    我感觉他的 concat 一步还是比较多余,应该是没有深入理解unix_timestamp函数=》去使用拼串去 符合默认参数格式 ,最好指定参数格式

    推荐

    from_unixtime(unix_timestamp(date_add(add_months(from_unixtime(unix_timestamp(),'yyyy-MM-dd hh:mm:ss'),-1),1),'yyyy-MM-dd'), 'yyyyMMdd')
  • 相关阅读:
    setContentView和inflate区别
    Android之用HTTP的get,post,HttpClient三种方式向service提交文本数据
    用C#製作PDF文件全攻略
    移动平台前端开发总结(针对iphone,Android等手机)
    Android实现左右滑动指引效果
    为 iPhone 和 iPad 自定义网站的主屏幕图标
    android 布局中的单位及分辨率自解
    纯css页面变灰度兼容ie、firefox、chrome、opera、safari
    Android判断网络连接是否可用(代码)
    Android实现渐显按钮的左右滑动效果
  • 原文地址:https://www.cnblogs.com/wqbin/p/10271075.html
Copyright © 2020-2023  润新知