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')
hive日期函数-Demo(二)的更多相关文章
- hive日期函数-原生函数(二)
1. from_unixtime 日期函数UNIX时间戳转日期函数: from_unixtime 语法:from_unixtime(bigint unixtime[, stringformat]) 返 ...
- hive日期函数
今天select from_unixtime(unix_timestamp(),'yyyy-MM-dd HH:mm:ss') UNIX时间戳转日期函数: from_unixtime 语法: from_ ...
- 【hive 日期函数】Hive常用日期函数整理
1.to_date:日期时间转日期函数 select to_date('2015-04-02 13:34:12');输出:2015-04-02122.from_unixtime:转化unix时间戳到当 ...
- Hive日期函数总结(转学习使用)
一.时间戳函数 1.获取当前时区的UNIX时间戳:select unix_timestamp(); 2.将指定时间转为UNIX时间戳: select unix_timestamp('2012-03-0 ...
- hive日期函数-杂谈(一)
来到广发返现由于历史遗留问题很多时间格式十分杂乱 我将总结一下时间日期的事情 1.hive原生时间函数的功能 2.一些基本业务时间范围的指标的sql案例 3.自定义udf函数让后来人更方便
- presto和hive日期函数对比
时间格式转换 日期格式→Unix时间戳 转10位Unix时间戳 数据:2020-07-23 15:01:13 Presto:select to_unixtime(cast('2020-07-23 15 ...
- hive日期函数-广发实战(三)
近一月客户新增常规里程数与额度比即上个月 第一天(包含)到上个月最后一天(包含) 字段是batch_date==>格式是 yyyymmdd ),'MM'),'-',''); +--------- ...
- hive函数总结-日期函数
获取当前UNIX时间戳函数: unix_timestamp语法: unix_timestamp() 返回值: bigint说明: 获得当前时区的UNIX时间戳举例: hive> select u ...
- Hive中日期函数总结
--Hive中日期函数总结: --1.时间戳函数 --日期转时间戳:从1970-01-01 00:00:00 UTC到指定时间的秒数 select unix_timestamp(); --获得当前时区 ...
随机推荐
- IDEA里的git的使用
1.将代码交由git管理 VCS ——> Enable Version Control Integration... 选择要使用的版本控制系统,选择Git ——> OK 2.将代码 ...
- IDEA连接 Oracle数据库
package com.zxx.util;import org.apache.commons.dbutils.DbUtils;import java.sql.Connection;import jav ...
- 安装oracle数据库11g及问题解决
安装步骤可借鉴https://www.cnblogs.com/qfb620/p/4577255.html 1.安装后发现用Navicat无法连接数据库显示报错ORA-28547:connection ...
- PAT A1036 Boys vs Girls(25)
AC代码 #include <cstdio> #include <algorithm> using namespace std; const int max_n = 11000 ...
- C++常用数据类型和Windows常见数据类型
一.C++基本的内置类型 C++ 为程序员提供了种类丰富的内置数据类型和用户自定义的数据类型.下表列出了七种基本的 C++ 数据类型: 类型 关键字 布尔型 bool 字符型 char 整型 int ...
- 前端BOOM和DOOM
BOOM :是指浏览器对象模型,它使JavaScript 有能力与浏览器进行 对话DOM: 是指文档对象模型,通过它可以访问HTML文档的所有元素 Windows对象 所有的浏览器都支持Window ...
- springboot自动配置国际化失效分析
最近在整理springBoot国际化时,发现国际化没有生效,通过报错提示在 MessageTag -> doEndTag处打断点 最后发现messageSource并不是ResourceBund ...
- 题解 P2280 【[HNOI2003]激光炸弹】
题目链接: https://www.luogu.org/problemnew/show/P2280 思路: 简单的二维前缀和,最后扫描一遍求 max(ans,f[i][j]+f[i-r][j-r]-f ...
- opencv 模板匹配, 已解决模板过大程序不工作的bug
#include <opencv2/opencv.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv ...
- vue进阶:基于vue-cli创建项目(搭建手脚架)
vue-cli安装.创建项目 基于vue-cli创建的项目进行开发 使用vue-cli图形化界面搭建项目 插件与工具 一.vue-cli简介.安装.创建项目 Vue-cli是基于Vue.js进行快速开 ...