hive时间和字符串互转,时间函数

news2024/11/26 9:58:41

hive里经常需要将字符串转化为date或timestamp 或者转化为日期格式的string

先说一个简单的 cast(xx as date/string/timestamp) 这个大多情况都可以用

1.to_date

to_date只保留年月日,参数必须是string类型的yyyy-MM-dd HH:mm:ss或者date或timestamp类型,返回值是date类型',

select "to_date('2009-07-30 04:17:52')",to_date('2009-07-30 04:17:52') union all 
select "to_date('2009-07-30 04')",to_date('2009-07-30 04') union all 
select "to_date(current_date)",to_date(current_date) union all 
select "to_date(current_timestamp)",to_date(current_timestamp)

 

 2.date_format

date_format(date/timestamp/string, fmt) - converts a date/timestamp/string to a value of string in the format specified by the date format fmt.

date_format 参数1可以是date timestamp 和string类型,第二个是format格式(yyyy-MM-dd hh:mm:ss),返回值是string。

select "date_format('2009-07-30 12:13:14','yyyyMMddHHmmss')", date_format('2009-07-30 12:13:14','yyyyMMddHHmmss') union all 
select "date_format(current_date,'yyyy-MM-dd HH:mm:ss')", date_format(current_date,'yyyy-MM-dd HH:mm:ss') union all 
select "date_format(current_timestamp,'yyyy-MM-dd HH:mm:ss') ",date_format(current_timestamp,'yyyy-MM-dd HH:mm:ss') 

 3.unix_timestamp 和

unix_timestamp(date[, pattern]) - Converts the time to a number

这个是把时间转化为时间戳的 也就是我们常说的 时间到1970-01-01 过了多少ms,返回值bigint

from_unixtime(unix_time, format) - returns unix_time in the specified format

这个就是把时间戳转化为时间格式

select  unix_timestamp(current_date) --1671379200

select unix_timestamp('20221219','yyyyMMdd') --1671379200

select unix_timestamp('20221219','yyyyMM') --4843814400 注意这里错了,格式一定要对

select from_unixtime(1671379200,'yyyyMM')--202212

这两个函数一般联合使用。

select "from_unixtime(UNIX_TIMESTAMP('20221219','yyyyMMdd'))",from_unixtime(UNIX_TIMESTAMP('20221219','yyyyMMdd'))union all 
select "from_unixtime(UNIX_TIMESTAMP('2022/12/19','yyyy/MM/dd'))",from_unixtime(UNIX_TIMESTAMP('2022/12/19','yyyy/MM/dd'))

 4.date_add

date_add(start_date, num_days) - Returns the date that is num_days after start_date.
start_date is a string in the format 'yyyy-MM-dd HH:mm:ss' or 'yyyy-MM-dd'. num_days is a number. The time part of start_date is ignored.

可以是string类型的日期,或者date类型或timestamp类型,返回值为date类型

select "date_add('2022-12-12',1)",date_add('2022-12-12',1) union all 
select "date_add('2022-12-12 12:00:00', 1)",date_add('2022-12-12 12:00:00', 1)union all 
select "date_add('2022/12/12 12:00:00', 1)",date_add('2022/12/12 12:00:00', 1) union all 
select "date_add(CURRENT_DATE,1)",date_add(CURRENT_DATE,1) union all 
select "date_add(CURRENT_timestamp,1)",date_add(CURRENT_timestamp,1)

 

 5.add_months

add_months(start_date, num_months, output_date_format) - Returns the date that is num_months after start_date.
start_date is a string or timestamp indicating a valid date. num_months is a number. output_date_format is an optional String which specifies the format for output.
The default output format is 'YYYY-MM-dd'.

这个函数第一个入参是string类型的日期,或date,或者timestamp,第二个是增加的月份可以为负数,第三个是转化的类型,最后返回值是string类型

select "add_months('2009-07-30',1)",add_months('2009-07-30',1) union all 
select "add_months(current_date,1)",add_months(current_date,1) union all 
select "add_months(current_timestamp,1)",add_months(current_timestamp,1) union all 
select "add_months(current_date,1,'yyyy-MM-dd HH:mm:ss')",add_months(current_date,1,'yyyy-MM-dd HH:mm:ss') union all 
select "add_months('2009-07-30 12:13:14',1,'yyyyMMdd')",add_months('2009-07-30 12:13:14',1,'yyyyMMdd')

 其实这个函数应该是分为两部分,第一部分计算增加月份,第二部分格式化date_format

6.其他日期函数

datediff

day

dayofmonth

DAYOFWEEK

floor_day

floor_month

floor_quarter

floor_year


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/101780.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

尚太科技开启招股:预计募资总额22亿元,业绩增长迅猛

12月19日,石家庄尚太科技股份有限公司(下称“尚太科技”,SZ:001301)开启招股,将在深圳证券交易所主板上市。本次冲刺上市,尚太科技的发行价格为33.88元/股,发行数量为6494.37万股,募…

MySQL Binlog温故知新

目录 一、什么是Binlog 二、Binlog文件记录模式 三、Binlog 日志内容 四、常用的binlog日志操作命令 五、binlog日志中间件 一、什么是Binlog Binlog (Binary log)是MySQL的二进制日志,以二进制的形式记录了对于数据库的变更&#xff0…

Tesseract-OCR 和cnocr/cnstd

Tesseract-OCR学习系列 Tesseract-OCR学习系列(四)API - 简书 参考文档:https://github.com/tesseract-ocr/tesseract/wiki/APIExample 这篇文章介绍了GetComponentImages等基础api的用法 Python 自动识别图片文字—保姆级OCR实战教程 Py…

使用界面配置静态路由(保姆级教程)

啰嗦几句 因为写的很详细,保姆级别的,所以看起来内容很多,但是东西就那一点,你自己配个2、3遍就会了。期末考试也不用担心这个实验了。 使用Cisco Packet Tracer这个软件。 原文件下载 补充:下载后使用Cisco Packet T…

有源电力滤波器——低压配电系统

安科瑞 华楠 一、谐波的危害 ● 使公用电网中的设备产生附加谐波损耗,降低电网、输电及用电设备的使用效率。 ● 在三相四线制系统中,由于零线流过大量的3n次谐波电流,造成零线过热。 ● 谐波会产生额外的热效应,引起用电设备…

GitLab创建新分支并同步其它分支的内容(IDEA)

拉取项目到本地 选择对应项目并复制clone地址 打开IDEA,选择File–》New–》Project from Version Control 在弹出的对话框中粘贴刚才复制的地址 完成后项目就被拉取到本地对应目录中了 创建新分支 这里以master分支为例,其它分支同理 首先在GitL…

Linux Red Hat 8.0 find命令练习

find:主要用来查找字符串 常用参数: -name 搜索文件名 -iname 搜索文件名时大小写不敏感 -type d 目录、 f 普通文件、 l 符号链接 -size 指定搜索文件大小 -perm 按执行权限来查找 -user 按…

在线考试网站

开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字): 模块划分:老师模块、班级模块、学生模块、课程模块、试题模块、试卷模块、 组卷模块、考试模块、答题模块 …

什么是项目风险管理?要如何执行风险管理?

项目风险管理是项目管理中重要组成部分之一,其影响着项目是否能成功最终交付的关键。虽然项目经理都无法准确地预测未来项目结果,但可以应用一种精简的风险管理流程来预测项目管理中的不确定性,并将这些不确定因素的影响降到最低。因此如何执…

基于Python+Django+Vue+MYSQL的邯郸地标美食导游平台

项目介绍 我的家乡是邯郸市。邯郸市我国为数不多的3000年没有改变过名字城市。我的家乡就是邯郸。在我的家乡有非常多的旅游景点和美食。为了让更多的人了解到邯郸的旅游景点和好吃的美食信息,我通过pythonvueelementui开发了本次的邯郸家乡网红旅游景点美食导游平…

CSS高级 DAY2

目录 选择器进阶 复合选择器 后代选择器 子代选择器 并集选择器 交集选择器 hover伪类选择器(就是鼠标悬停选择器) 背景有关属性 背景颜色 背景图片 背景平铺 背景位置 背景的复合属性 元素显示模式 块级元素 行内元素 行内块元素 元素显示…

SimpleDateFormat线程不安全解析以及解决方案

我们都知道SimpleDateFormat是Java中用来日期格式化的一个类,可以将特定格式的字符转转化成日期,也可将日期转化成特定格式的字符串。比如 将特定的字符串转换成日期 public static void main(String[] args) throws ParseException {SimpleDateFormat…

windows11打开隐藏的gpedit.msc本地组策略编辑器以及禁止自动更新系统

目录打开隐藏的gpedit.msc本地组策略编辑器windows11禁止自动更新系统打开隐藏的gpedit.msc本地组策略编辑器 1.新建.txt文本文件,输入如下代码 echo off pushd “%~dp0” dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtension…

a股行情接口功能特点

a股行情接口功能特点,如下: 1、支持A股历史交易查询; 2、包括股票数据; 3、每日A股收盘后更新当日交易数据,停牌不更新; 4、支持多股历史数据一次查询; 5、支持任何时间段查询;…

Linux进程概念(二)

Linux进程概念进程状态普通操作系统层面理解运行与阻塞挂起与阻塞Linux是怎么做的孤儿进程进程优先级什么是优先级如何改变优先级其他概念进程状态 进程状态分有: 运行 新建 就绪 挂起 阻塞 等待 停止 挂机 死亡… 状态其实就是返回的整形,就像某个数字…

【毕业设计_课程设计】基于 SVM 分类器的动作识别系统(源码+论文)

文章目录0 项目说明1 研究目的2 研究方法2.1 动作采集2.2 动作识别2.3 智能家居模拟3 论文目录4 项目工程0 项目说明 基于 SVM 分类器的动作识别系统 提示:适合用于课程设计或毕业设计,工作量达标,源码开放 1 研究目的 本项目对经典 SVM 二…

从企业关心的重点,带你了解商业智能BI

企业进行信息化建设,能通过业务信息系统以及规范化、标准化的业务流程存储高质量的业务数据,而这些数据则是数字化转型成功的重要条件。只有信息化和数字化共同发展,企业才能成功完成数字化转型,构建全新的商业模式,完…

kafka的客户端限流(资源配额)

前言 本文说明的是Kafka的客户端(生产者、消费者)与broker之前的限流,不是kafka的broker间topic副本同步的限流。 客户端限流 在kafka的官方文档,不叫限流,叫做资源配额:通过对客户端请求进行配额&#…

细节决定成败:探究Mybatis中javaType和ofType的区别

一. 背景描述 今天,给学生讲解了Mybatis框架,学习了基础的ORM框架操作及多对一的查询。在练习的时候,小张同学突然举手求助,说在做预习作业使用一对多查询时,遇到了ReflectionException 异常 。 二. 情景再现 1. 实…

css 网格布局

简介: 网格是由一系列水平及垂直的线构成的一种布局模式。一个网格通常具有许多的列(column)与行(row),以及行与行、列与列之间的间隙,这个间隙一般被称为沟槽(gutter)。…