最近用hive比较多,虽然效率低,但是由于都是T+1的业务模式。所以也就不要求太多了,够用就行。其中用的吧比较多就是时间了,由于大数据中很多字段都不是标准的时间类型字段,所以期间涉及了很多的时间日期字段的处理,这里做一个汇总。一遍以后查询使用。也方便大家学习。

下面列举几个用的比较多的情况进行说明:

获得当前日期的几种用法:

1.先来一个比较老的,select unix_timestamp() ;

结果如下:

2.通过提示可知该用法已经被放弃了建议采用current_timestamp来替代。查结果如下:

3.如果当前时间为int类型则需要转义一下比如使用from_unixtime()

SELECT from_unixtime(unix_timestamp());

--2018-02-27 14:51:01

4.获取当前日期CURRENT_DATE。代码如下:

SELECT CURRENT_DATE;

--2018-02-27

有关日期的函数:

1.对比日期函数,经常用于日期之间比较大小,或者计算差值,日期加减。

日期差值:datadiff(结束日期,开始日期),返回结束日期减去开始日期的天数。

日期加减:date_add(时间,增加天数),返回值为时间天+增加天的日期;date_sub(时间,减少天数),返回日期减少天后的日期。

执行情况如图所示:

  注意如果想知道相差多少个小时又怎么去求那?我们其实稍加改造即可。

  hour函数可以获得时间字段的小时数和datediff来获取两个日期相差的天数。然后利用天数*24+hour的差值即为所求,

  比如我们求2018-02-27 10:00:00 与 2018-02-25 12:00:00相差多少?

 实例代码如下:
select (hour('2018-02-27 10:00:00')-hour('2018-02-25 12:00:00')+(datediff('2018-02-27 10:00:00','2018-02-25 12:00:00'))*24) as hour_subValue

--46 

  补充一个:返回当前时间下再增加num_months个月的日期  add_months(string start_date, int num_months)

2.上面介绍了hour函数,那么我们也会需要其他的时间提取,不多说直接看代码,年月日时分秒:
select year('2018-02-27 10:00:00'),month('2018-02-27 10:00:00'),day('2018-02-27 10:00:00'),hour('2018-02-27 10:00:00'),minute('2018-02-27 10:00:00'),second('2018-02-27 10:00:00'),weekofyear('2018-02-27 10:00:00'); 

--2018    2    27    10    0    0    9

  补充:quarter,返回当前本年度第几个季度。

3.日期转换函数
to_date,语法: to_date(string timestamp),返回值为string类型的日期
示例如下:
select to_date('2018-02-27 10:03:01') ;

--2018-02-27
last_day(string date),返回这个月的最后一天的日期
select  last_day('2018-02-27 10:03:01');
--2018-02-28

next_day返回当前时间的下一个星期几所对应的日期 。如下

select next_day('2018-02-27 10:03:01', 'TU');

--2018-03-06

  说明,输入日期为2-27,下个星期的周二为03-06,如果想要知道下周一的日期就是MO,周日就是SU,以此类推。

注意:

我跟无数多小白说过,西方国家周日是每周的第一天,所以日历和英语中都是现实周日再是周一,所以上面的下周日是3-4。注意喽!

总结

    以上是我平时经常用的一些日期相关的处理和函数,比较方便,想不起来就过来扫一眼。毕竟hive用的比较少,相对于关系型数据库的t-sql函数和方法还是比较low的,毕竟是个转义工具。
目前主流还是hivesql,不过慢慢的都在想sparksql之类技术的转移了。以后有新的日期函数我会继续想本文中进行汇总,方便大家查询。

Hive 时间日期处理总结的更多相关文章

  1. hive时间日期函数及典型场景应用

    1.hive取得当前日期时间: 1.1) 取得当前日期: select current_date(); 1.2) 取得当前日期时间: select current_timestamp(); 1.3) ...

  2. Hive中日期函数总结

    --Hive中日期函数总结: --1.时间戳函数 --日期转时间戳:从1970-01-01 00:00:00 UTC到指定时间的秒数 select unix_timestamp(); --获得当前时区 ...

  3. hive时间

    Hive中日期函数总结:1.时间戳函数日期转时间戳:从1970-01-01 00:00:00 UTC到指定时间的秒数select unix_timestamp(); --获得当前时区的UNIX时间戳s ...

  4. Hive 时间操作函数(转)

    1.日期函数UNIX时间戳转日期函数: from_unixtime 语法:   from_unixtime(bigint unixtime[, string format]) 返回值: string ...

  5. Hive 时间操作

    Hive 时间转换 UNIX时间戳概念:因为UNIX时间戳只是一个秒数,一个UNIX时间戳在不同时区看来,时间是不同的.如UNIX时间戳0,在0时区看来是1970-01-01 00:00:00,在东八 ...

  6. 一起学微软Power BI系列-使用技巧(5)自定义PowerBI时间日期表

    1.日期函数表作用 经常使用Excel或者PowerBI,Power Pivot做报表,时间日期是一个重要的纬度,加上做一些钻取,时间日期函数表不可避免.所以今天就给大家分享一个自定义的做日期表的方法 ...

  7. MySQL学习记录--生成时间日期数据

    时间数据格式组件: 组件 定义 范围 YYYY 年份,包括世纪 1000~9999 MM 月份 01(January)~12(December) DD 日 01~31 HH 小时 00~23 HHH ...

  8. SQL-数学、字符串、时间日期函数和类型转换

    --数学函数 --ABS绝对值,select ABS(-99)--ceiling取上限,select CEILING(4.5)--floor去下限select FLOOR(4.5)--power 几次 ...

  9. SQLite中的时间日期函数(转)

    SQLite包含了如下时间/日期函数: datetime().......................产生日期和时间date()...........................产生日期tim ...

随机推荐

  1. OpenCV鼠标滑轮事件

    鼠标的滑轮事件实现图像的缩放很方便,具体在回调函数中如下写: 其中scale可以在外部定义为全局变量,通过响应CV_EVENT_MOUSEWHEEL滑轮事件获取Scale的具体值. 获取Scale值需 ...

  2. CCF系列之ISBN号码(201312-2)

    试题名称: ISBN号码 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字.1位识别码和3位分隔符,其规 ...

  3. FreeMarker 集合遍历

    freemarker list (长度,遍历,下标,嵌套,排序) 1. freemarker获取list的size : Java ArrayList<String> list = new ...

  4. C# 内置 DateTime类详解

    C# 内置 DateTime类详解 摘抄自微软官方文档,用来方便自己查阅:网址:https://msdn.microsoft.com/zh-cn/library/system.datetime(v=v ...

  5. ASP.net core 2.0.0 中 asp.net identity 2.0.0 的基本使用(一)—修改数据库连接

    开发环境:vs2017  版本:15.3.5 项目环境:.net framework 4.6.1    模板asp.net core 2.0  Web应用程序(模型视图控制器) 身份验证:个人用户账号 ...

  6. 【笔记】vue-cli 打包后路径问题出错的解决方法

    几天之前打包自己的vue 项目上传到远程服务器上面 但是遇到了如下几个问题: 1. 线上浏览页面时是空白页面 2. 打包后资源文件(js, css 文件)引用的路径不正确 3. 开发环境中使用到的如: ...

  7. Django rest framework:__str__ returned non-string (type NoneType) 真正原因

    出错原因: 用户表是Django中核心的表,当这个表类字段中有一个这样的函数 def __str__(self): return self.name 在Django用户表设计时候有个字段容易犯这个失误 ...

  8. 微信屏蔽js分享、复制链接

    页面内引入js(不放在页面内部不起作用) $(function(){ function onBridgeReady() { WeixinJSBridge.call('hideOptionMenu'); ...

  9. 关于flying框架

    开发10多年了,开发过程中遇到的最大的问题: ①项目的代码越来越多了,越来越复杂了,而客户的需求,你还不得不往里面加入新代码. ②开发了很多项目,每次复用时却只能把代码copy来copy去,然后调试. ...

  10. Android内核三大核心功能之一AMS内部原理

    上面类是AmS的全称,另外两大核心功能是WindowManagerService.java和View.java AmS提供的主要功能: 统一调度各应用程序 内存管理 进程管理 AmS中定义了几个重要的 ...