主题:解决hive获取今天、昨天、明天的日期的问题

注意:由于hive内置函数中,没有提供获取昨天和明天的日期函数,所以需要编写自定义函数去实现

1、获取今天时间(格式可以自定义)

语句:

select from_unixtime(unix_timestamp(),'yyyy-MM-dd HH:mm:ss')

返回结果:

2016-09-14 16:21:59

2、获取昨天、明天时间(需要编写UDF自定义函数)

(1)此处不大篇幅讲解编写hive udf的buzz,如需查看详细,请见:http://blog.csdn.net/high2011/article/details/52425430

(2)此处只讲实现udf的java代码如下:

import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;/*** Document:本类作用---->获取明天或者昨天时间* User: yangjf* Date: 2016/9/14  16:26*/
public class NextDay extends UDF {public String evaluate(int i) {Date date=new Date();//取时间Calendar calendar = new GregorianCalendar();calendar.setTime(date);calendar.add(calendar.DATE,i);//把日期往后增加一天.整数往后推,负数往前移动,0代表今天的时间date=calendar.getTime();      //这个时间就是日期往后推一天的结果SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String dateString = formatter.format(date);return dateString;}public static void main(String[] args) {System.out.println("今天时间:"+new NextDay().evaluate(0));System.out.println("明天时间:"+new NextDay().evaluate(1));System.out.println("昨天天时间:"+new NextDay().evaluate(-1));}
}
/*** 结果:今天时间:2016-09-14 16:35:58*       明天时间:2016-09-15 16:35:58*       昨天时间:2016-09-13 16:35:58* /

(3)在hive中注册临时函数:"getMyDate"

(4)使用函数:

获取今天时间----》select   getMyDate(0);

2016-09-14 16:38:31

获取明天时间----》select   getMyDate(1);

2016-09-15 16:38:31

获取昨天时间----》select   getMyDate(-1);

2016-09-13 16:38:31

以上测试已经通过,可直接使用,如有疑问,请留言,欢迎各位批评指正!

-----------------------------

当然,如果小伙伴们不想使用udf,只是想获取 yyyy-MM-dd 格式的日期,那么可以这样:

date_add('2008-12-31', 1) = '2009-01-01'.

date_sub(current_date ,1) = 昨天的日期(yyyy-MM-dd)

-----------------------------

补充下:获取前 n 个小时或者后 n 个小时的时间

3600=60 * n

select hour(from_unixtime(unix_timestamp(date_format(current_timestamp,'yyyy-MM-dd HH:mm:ss') )-3600));

返回值是 int

-----------------------------

[Hive举例]-- hive获取今天、昨天、明天和前一个小时、后一个小时的日期相关推荐

  1. MySQL查询一周前/三个月前/一年前,及昨天、今天、明天、前一个小时和后一个小时的时间

    一年前 SELECT DATE_SUB(CURDATE(), INTERVAL 1 YEAR); 三月前 SELECT DATE_SUB(CURDATE(), INTERVAL 3 MONTH); 一 ...

  2. mysql获取当天每小时统计_详解mysql 获取某个时间段每一天、每一个小时的统计数据...

    获取每一天的统计数据 做项目的时候需要统对项目日志做分析,其中有一个需求是获取某个给定的时间段内,每一天的日志数据,比如说要获取从2018-02-02 09:18:36到2018-03-05 23:1 ...

  3. 根据当前时间 获取前一个月后一个月

    根据当前时间 获取前一个月后一个月 const lastMonth = new Date();lastMonth.setMonth(new Date().getMonth() - 1)//格式话 使用 ...

  4. SQL 获取某个时间段每一天、每一个小时的统计数据

    获取每一天的统计数据 做项目的时候需要统对项目日志做分析,其中有一个需求是获取某个给定的时间段内,每一天的日志数据,比如说要获取从2018-02-02 09:18:36到2018-03-05 23:1 ...

  5. mysql 获取某个时间段每一天、每一个小时的统计数据

    获取每一天的统计数据 做项目的时候需要统对项目日志做分析,其中有一个需求是获取某个给定的时间段内,每一天的日志数据,比如说要获取从2018-02-02 09:18:36到2018-03-05 23:1 ...

  6. 获取今天的日期(年月日时分秒)、获取今天昨天明天的日期

    1.获取今天的日期(年月日时分秒) getCurrentTime() {let yy = new Date().getFullYear();let mm = new Date().getMonth() ...

  7. JS中怎样获取当前日期的前一个月和后一个月的日期字符串

    场景 前端使用日期选择控件在刚进入页面时开始时间和结束时间默认赋值为当前日期的一个月前和一个月后. 并且赋值的格式为"2020-10-9"这种日期字符串格式. 注: 博客: htt ...

  8. python获取时间————前一天后一天前一小时后一小时前一分钟后一分钟前一秒后一秒

    SSRQ='2022-04-08' SSRQ_datetime= datetime.datetime.strptime(SSRQ,'%Y-%m-%d') 字符串转换为时间类型 导入包 import d ...

  9. SQL server 获取一周前到两周后之间的所有日期

    select dateadd(day,number,convert(date,dateadd(DD,-7,getdate()),23)) as datefrom master.dbo.spt_valu ...

最新文章

  1. java i 原子_为什么i ++不是原子的?
  2. python编程实例视屏-使用Python实现视频下载功能实例代码
  3. 量化策略研究员 - 工具篇
  4. PHP的闭包函数匿名函数
  5. 搜索引擎学习(三)Lucene查询索引
  6. .Net程序内存泄漏解析
  7. linux 64位内存划分,linux 64位内存空间大小?(linux 64 bits memory space size? [closed])
  8. 【HTML】iframe嵌套界面自适应,可高度自由收缩
  9. 计算机文本专业,15计算机专业2文字录入期中考试卷
  10. reshape [] matlab,matlab reshape函数
  11. 2018.10.20 2018-2019 ICPC,NEERC,Southern Subregional Contest(Online Mirror, ACM-ICPC Rules)
  12. 第四章.深入类的方法
  13. access无法 dolby_dolby access怎么用?
  14. 分体式水晶头_桌面运维小知识--六类水晶头的接线方法(分体式安装图解)
  15. 特斯拉开火,状告5名前员工、小鹏汽车、Zoox身陷漩涡...
  16. visual studio code打不开
  17. 虚拟机安装麒麟操作系统网络设置
  18. 【第1期】腾讯云的1001种玩法征集,Ipad mini和Kindle 等你拿!(文章评审中)
  19. Linkerd 2.10(Step by Step)—设置服务配置文件
  20. 【matplotlib】画图基本函数 pyplot.barh 画水平柱状图

热门文章

  1. 仿《广州从化区慢性病地理信息平台》项目研发总结
  2. WPS文件转Excel文件怎么转?建议看看这些方法
  3. form-create-desniger 自定义拖拽表单
  4. 几款支持国标GB28181的平台以及视频监控设备接入的配置方法(Web端无插件播放)
  5. 智能组卷、专项针对性练习,提高刷题效果!
  6. 快来,别人不知道的秘密,QQ空间视频下载教程
  7. 懒人如何减肥肚子和腰 减腰腹最好的最快方法
  8. 基于 ANSIBLE 自动化运维实践
  9. 小程序源码:求职招聘微信小程序源码下载v4.1.78
  10. 网页设计成品DW静态网页Html5响应式css3——电影网站bootstrap制作(4页)