当前位置: 首页 > news >正文

impala常用时间函数,date->string->timestamp互转

impala 和hive不一样,hive是弱类型,比如int和string在大部分条件下可以比较

比如hive  select 1='1'    --结果true或false

但是impala   select 1='1' 报错 operands of type TINYINT and STRING are not comparable: 1 = '1'

这样带来的好处是 类型一致结果更准确,缺点是增加开发人员的精力。。

话不多说直接来案例。

如何查看impala有哪些函数呢?

use _impala_builtins;

show functions like "*date*";

1.NOW()和current_timestamp() 返回当前时间,返回值是timestamp类型

select current_timestamp(),now()

2.current_date() 返回当前年月日,返回值是string类型

select current_date()

3.unix_timestamp() 返回当前时间戳,返回值bigInt类型

unix_timestamp()
unix_timestamp(STRING)
unix_timestamp(STRING, STRING)
unix_timestamp(TIMESTAMP)

select 'unix_timestamp()',unix_timestamp() union all 
select 'unix_timestamp(NOW())' ,unix_timestamp(NOW())union all 
select 'unix_timestamp(\'2023-01-01\')',unix_timestamp('2023-01-01')union all 
select 'unix_timestamp(\'20230101\',\'yyyyMMdd\')',unix_timestamp('20230101','yyyyMMdd') union all 
select 'unix_timestamp(\'2023-01-01 00:00:01\')',unix_timestamp('2023-01-01 00:00:01')

4.from_timestamp和 from_unixtime 返回的都是string类型,

注意这个impala没有date_format或者to_date这种行数 对于标准的时间格式yyyy-MM-dd 想要格式化为自己需要的类型 就需要这两个函数了

from_timestamp(TIMESTAMP, STRING)
from_unixtime(BIGINT)
from_unixtime(BIGINT, STRING)
from_unixtime(INT)
from_unixtime(INT, STRING)

select 'from_timestamp(NOW(),\'yyyy-MM-dd HH:mm:ss\') ',from_timestamp(NOW(),'yyyy-MM-dd HH:mm:ss') union all 
select 'from_unixtime(cast (1695125510 as bigint)) ',from_unixtime(cast (1695125510 as bigint)) union all 
select 'from_unixtime(cast (1695125510 as bigint),\'yyyy-MM\') ',from_unixtime(cast (1695125510 as bigint),'yyyy-MM') union all 
select 'from_unixtime(1695125510) ',from_unixtime(1695125510) union all
select 'from_unixtime(1695125510,\'yyyy-MM-dd \')',from_unixtime(1695125510,'yyyy-MM-dd ')

所以2和3经常配合使用

demo1  20231122转为 2023-11-22

select "from_unixtime(unix_timestamp('20221122','yyyyMMdd'),'yyyy-MM-dd')", from_unixtime(unix_timestamp('20221122','yyyyMMdd'),'yyyy-MM-dd')

demo2 获取当前时间的各种格式

 select "from_unixtime(unix_timestamp(),'yyyy-MM-dd')", from_unixtime(unix_timestamp(),'yyyy-MM-dd') union all 
select "from_unixtime(unix_timestamp(),'yyyyMMddHHmmss')",  from_unixtime(unix_timestamp(),'yyyyMMddHHmmss')

有人会说了为什么不直接用select now(),因为now()返回的是tmiestamp呀,from_unixtime是string一般来说我们更倾向于使用string。

 

 5 add_months操作,入参说是date,timestamp也可以是string,返回值是timestamp

add_months(DATE, BIGINT)
add_months(DATE, INT)
add_months(TIMESTAMP, BIGINT)
add_months(TIMESTAMP, INT)

months_add(DATE, BIGINT)
months_add(DATE, INT)
months_add(TIMESTAMP, BIGINT)
months_add(TIMESTAMP, INT)

其中第二个参数int和bigint是一样的没什么区别就是一个方法的重载,支持不同类型的参数

select "add_months(NOW() ,0)",add_months(NOW() ,0) union all
select "add_months('2022-01-23',1)",add_months('2022-01-23',1) union all 
select "add_months(NOW() ,cast(1 as bigint ))",add_months(NOW() ,cast(1 as bigint ))

 

6 adddate和date_add,入参date和timestamp,返回值说是有date和timestamp其实都是timestamp

天的增加

adddate(DATE, BIGINT)
adddate(DATE, INT)
adddate(TIMESTAMP, BIGINT)
adddate(TIMESTAMP, INT)
date_add(DATE, BIGINT)
date_add(DATE, INT)
date_add(TIMESTAMP, BIGINT)
date_add(TIMESTAMP, INT) 

days_add(DATE, BIGINT)
days_add(DATE, INT)
days_add(TIMESTAMP, BIGINT)
days_add(TIMESTAMP, INT)

天的减少

date_sub(DATE, BIGINT)
date_sub(DATE, INT)
date_sub(TIMESTAMP, BIGINT)
date_sub(TIMESTAMP, INT)

subdate(DATE, BIGINT)
subdate(DATE, INT)
subdate(TIMESTAMP, BIGINT)
subdate(TIMESTAMP, INT)

其实和add_months操作一样

select 'adddate(now(),1)',adddate(now(),1) union all 
select 'adddate(now(),-1)',adddate(now(),-1) union all 
select 'date_add(now(),0)',date_add(now(),0) union all 
select 'date_add(CURRENT_DATE(),1)',date_add(CURRENT_DATE(),1) union all 
select 'date_add(current_date(),-1)',date_add(current_date(),-1)

7.同理还有时间参数的计算就不一一举例了。

年份的增加

weeks_add(DATE, BIGINT)
weeks_add(DATE, INT)
weeks_add(TIMESTAMP, BIGINT)
weeks_add(TIMESTAMP, INT)
周的增加

years_add(DATE, BIGINT)
years_add(DATE, INT)
years_add(TIMESTAMP, BIGINT)
years_add(TIMESTAMP, INT)

小时的增加

hours_add(TIMESTAMP, BIGINT)
hours_add(TIMESTAMP, INT) 

分钟的增加

minutes_add(TIMESTAMP, BIGINT)
minutes_add(TIMESTAMP, INT)

毫秒的增加

milliseconds_add(TIMESTAMP, BIGINT)
milliseconds_add(TIMESTAMP, INT)

微秒的增加

microseconds_add(TIMESTAMP, BIGINT)
microseconds_add(TIMESTAMP, INT)

8 date_trunc() 对timestamp进去取整,返回类型是timestamp

date_trunc(STRING, DATE)

date_trunc(STRING, TIMESTAMP)

select "date_trunc('year', CURRENT_TIMESTAMP())  ",date_trunc('year', CURRENT_TIMESTAMP())  union all 
select "date_trunc('month', CURRENT_TIMESTAMP()) ",date_trunc('month', CURRENT_TIMESTAMP()) union all 
select "date_trunc('week', CURRENT_TIMESTAMP())  ",date_trunc('week', CURRENT_TIMESTAMP())  union all 
select "date_trunc('day', CURRENT_TIMESTAMP())   ",date_trunc('day', CURRENT_TIMESTAMP())   union all 
select "date_trunc('hour', CURRENT_TIMESTAMP())  ",date_trunc('hour', CURRENT_TIMESTAMP())  union all 
select "date_trunc('minute', CURRENT_TIMESTAMP())",date_trunc('minute', CURRENT_TIMESTAMP())union all 
select "date_trunc('second', CURRENT_TIMESTAMP())",date_trunc('second', CURRENT_TIMESTAMP())

9 datediff求日期的间隔,返回值是int 可以为负数

datediff(DATE, DATE)
datediff(TIMESTAMP, TIMESTAMP)

select "datediff('2023-01-04',now())         ",datediff('2023-01-04',now())         union all 
select "datediff('2023-01-04',CURRENT_DATE())",datediff('2023-01-04',CURRENT_DATE())union all 
select "datediff('2023-01-03','2023-01-01')  ",datediff('2023-01-03','2023-01-01')  
 

10 to_date 将timestamp标准化年月日,入参可以是string或者timestamp,返回值timestamp

to_date(TIMESTAMP) 

其实还可以to_date(STRING)

select "to_date(now())       ",to_date(now())       union all 
select "to_date('2023-1-2')  ",to_date('2023-1-2')  union all
select "to_date('2022-01-01')",to_date('2022-01-01')union all
select "to_date('2022/01/01')",to_date('2022/01/01')

 

11获取单独的年于日时分秒 函数,当然也可以通过格式化获取
date_part(STRING, DATE)
date_part(STRING, TIMESTAMP) 

select "date_part('year',now())    ",date_part('year',now())    union all     
select "date_part('month',now()) ",date_part('month',now()) union all 
select "date_part('day',now())   ",date_part('day',now())   union all 
select "date_part('hour',now())  ",date_part('hour',now())  union all 
select "date_part('minute',now())",date_part('minute',now())union all 
select "date_part('second',now())",date_part('second',now())union all 
select "YEAR(now())              ",YEAR(now())              union all 
select "MONTH(now())             ",MONTH(now())             union all 
select "day(now())               ",day(now())               union all 
select "HOUR(now())              ",HOUR(now())              union all 
select "MINUTE(now())            ",MINUTE(now())            union all 
select "SECOND (now())           ",SECOND (now())        

 

11 date_cmp 这个函数是比较两个日期大小的,可以看作简化版的datediff,返回值int

1代表第一个日期比第二个日期大。

date_cmp(DATE, DATE)

select "date_cmp('2023-09-22','2023-09-21')",date_cmp('2023-09-22','2023-09-21') union all 
select "date_cmp('2023-09-22','2023-09-22')",date_cmp('2023-09-22','2023-09-22') union all 
select "date_cmp('2023-09-22','2023-09-23')",date_cmp('2023-09-22','2023-09-23') 

12 判断当前日期是今年第几天,这周的第几天

dayofmonth(DATE)
dayofmonth(TIMESTAMP)
dayofweek(DATE)
dayofweek(TIMESTAMP)
dayofyear(DATE)
dayofyear(TIMESTAMP)

select "DAYOFMONTH(CURRENT_DATE())",DAYOFMONTH(CURRENT_DATE()) union all 
select "DAYOFWEEK(CURRENT_DATE()) ",DAYOFWEEK(CURRENT_DATE())  union all 
select "DAYOFYEAR(CURRENT_DATE()) ",DAYOFYEAR(CURRENT_DATE())  

注意这里dayofweek 可不是周六。当前时间2023-09-22 为啥显示是周六呢?应该是老外把周天当作第一天,所以周五就是第六天了。

 

相关文章:

impala常用时间函数,date->string->timestamp互转

impala 和hive不一样,hive是弱类型,比如int和string在大部分条件下可以比较 比如hive select 11 --结果true或false 但是impala select 11 报错 operands of type TINYINT and STRING are not comparable: 1 1 这样带来的好处是 类型一致结果更…...

无源供电无线测温系统的应用意义

电力系统设备在长期的运行中,往往会产生老化或过热现象,如果没有及时发现和解决,可能会造成严重的火灾事故。由于变电站设备地理位置偏远,对于其维护和监控,管理人员不能做到面面俱到,巡检和维护的难度较大…...

使用 PyTorch 的计算机视觉简介 (1/6)

一、说明 Computer Vision(CV)是一个研究计算机如何从数字图像和/或视频中获得一定程度的理解的领域。理解这个定义具有相当广泛的含义 - 它可以从能够区分图片上的猫和狗,到更复杂的任务,例如用自然语言描述图像。 二、CV常见的问…...

用PHP实现极验验证功能

极验验证是一种防机器人的验证机制,可以通过图像识别等方式来判断用户是否为真实用户。在实现极验验证功能时,您需要进行以下步骤: 1 注册极验账号: 首先,您需要在极验官网注册账号并创建一个应用,获取相应…...

【数据结构初阶】三、 线性表里的链表(无头+单向+非循环链表)

相关代码gitee自取: C语言学习日记: 加油努力 (gitee.com) 接上期: 【数据结构初阶】二、 线性表里的顺序表_高高的胖子的博客-CSDN博客 引言 通过上期对顺序表的介绍和使用 我们可以知道顺序表有以下优点和缺点: 顺序表优点 尾插 和 尾…...

Mybatis 映射器与XML配置职责分离

之前我们介绍了使用XML配置方式完成对数据的增删改查操作,使用此方式在实际调用时需要使用【命名空间.标签编号】的方式执行,此方式在编写SQL语句时很方便,而在执行SQL语句环节就显得不太优雅;另外我们也介绍了使用映射器完成对数…...

微服务引擎

微服务引擎,MSE_微服务引擎 MSE-阿里云帮助中心 一、什么是微服务引擎MSE 微服务引擎MSE(Microservices Engine)是一个面向业界主流开源微服务生态的一站式微服务平台,提供注册配置中心(原生支持Nacos/ZooKeeper/Eur…...

前端JavaScript入门到精通,javascript核心进阶ES6语法、API、js高级等基础知识和实战 —— JS基础(三)

允许一切发生&#xff0c;生活不过是见招拆招。 思维导图 一、循环-for 1.1 for 循环-基本使用 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEe…...

搭建部署属于自己的基于gpt3.5的大语言模型(基于flask+html+css+js+mysql实现)

一、简介 本项目是一个基于GPT-3.5模型的聊天机器人网站&#xff0c;旨在为用户提供一个简便、直接的方式来体验和利用GPT-3.5模型的强大功能。项目以Flask为基础&#xff0c;构建了一个完整的Web应用程序&#xff0c;其中包含了多个前端页面和后端API接口&#xff0c;能够处理…...

AI创作专家,免费的AI创作专家工具

AI创作专家是一种崭新的工具&#xff0c;它们利用先进的人工智能技术&#xff0c;帮助创作者和写手更轻松地应对创作挑战。这些工具不仅可以生成文字&#xff0c;还可以提供灵感、帮助构思和组织思路&#xff0c;使创作过程更加高效。 147GPT批量文章生成工具​www.147seo.com/…...

Nginx之gzip模块解读

目录 gzip基本介绍 gzip工作原理 Nginx中的gzip 不建议开启Nginx中的gzip场景 gzip基本介绍 gzip是GNUzip的缩写&#xff0c;最早用于UNIX系统的文件压缩。HTTP协议上的gzip编码是一种用来改进web应用程序性能的技术&#xff0c;web服务器和客户端&#xff08;浏览器&…...

微软在Windows 11推出Copilot,将DALL-E 3集成在Bing!

美东时间9月21日&#xff0c;微软在美国纽约曼哈顿举办产品发布会&#xff0c;生成式AI成为重要主题之一。 微软表示&#xff0c;Copilot将于9月26日在Windows 11中推出&#xff1b;Microsoft 365 Copilot 将于11 月1日向企业客户全面推出&#xff1b;将OpenAI最新的文本生成图…...

SLAM从入门到精通(消息传递)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们只是编写了一个publisher节点&#xff0c;以及一个subscribe节点。有了这两个节点&#xff0c;它们之间就可以通信了。在实际生产中&#…...

思科路由器:NAT的基础配置

一直以来&#xff0c;对于华为、H3C、锐捷交换机的命令配置&#xff0c;不断的有朋友留言&#xff0c;三家交换机的配置命令容易弄混&#xff0c;经常在实际项目配置中出错&#xff0c;因此&#xff0c;找几个基础的示例来练练。 R1配置 Router>en Router>enable Rout…...

动态代理。

无侵入式的给代码增加额外的功能 代理的作用&#xff1a;对象如果干的事情太繁琐&#xff0c;就可以通过代理来转移部分职责&#xff1b;也就是相当于把对象的的方法拆开一些步骤分给代理做&#xff0c;对象做关键的就行了&#xff1b;并且代理做的这些繁琐的事情的名字也要和…...

Learn Prompt-GPT-4:能力

GPT-4能力大赏​ 常识知识推理​ 一个猎人向南走了一英里&#xff0c;向东走了一英里&#xff0c;向北走了一英里&#xff0c;最后回到了起点。他看到了一只熊&#xff0c;于是开枪打了它。这只熊是什么颜色的&#xff1f; 答案是白色&#xff0c;因为这种情况只可能发生在北…...

iOS——ViewController的生命周期

ViewController ViewController的生命周期是指在应用程序运行过程中&#xff0c;ViewController实例从创建到销毁的整个过程。在这个过程中&#xff0c;ViewController会经历一系列的生命周期方法&#xff0c;这些方法可以帮助开发者管理ViewController及其相关的视图和逻辑。…...

SkyWalking内置参数与方法

参数 全局指标 指标指标名称all_p99所有服务响应时间的 p99 值all_p95所有服务响应时间的 p95 值all_p90所有服务响应时间的 p90 值all_p75所有服务响应时间的 p75 值all_p70所有服务响应时间的 p70 值all_heatmap所有服务响应时间的热点图 服务指标 指标指标名称service_r…...

【C++面向对象侯捷】12.虚函数与多态 | 13.委托相关设计【设计模式 经典做法,类与类之间关联起来,太妙了,不断的想,不断的写代码】

文章目录 12.虚函数与多态举例&#xff1a;委托 继承【观察者模式】13.委托相关设计Composite 组合模式Prototype 原型模式 12.虚函数与多态 纯虚函数 一定要 子类重新定义的 继承和复合 关系下的构造和析构 举例&#xff1a;委托 继承【观察者模式】 13.委托相关设计 问题…...

基于若依ruoyi-nbcio增加flowable流程待办消息的提醒,并提供右上角的红字数字提醒(五)

1、下面提供给前端待办提醒消息的接口SysNoticeController&#xff0c;增加如下&#xff1a; /*** 补充用户数据&#xff0c;并返回系统消息* return*/Log(title "系统消息")GetMapping("/listByUser")public R<Map<String, Object>> listByU…...

2.4 微积分与自动微分1

微积分 导数与微分 操作之前记得检查版本确保 matplotlib 正确安装&#xff1a;在d2l环境下输入pip install matplotlib (windows版) 重启jupyter就可以运行了&#xff08;如果还是不行自行移步ai&#xff09; 1.我们通过简单的微分方式得到我们需要的极限 2.之后我们再试着…...

AutoHotkey实战:5分钟搞定Mac/Windows跨平台快捷键统一(附完整脚本)

AutoHotkey实战&#xff1a;5分钟搞定Mac/Windows跨平台快捷键统一&#xff08;附完整脚本&#xff09; 对于频繁切换Mac和Windows双系统的开发者来说&#xff0c;最令人抓狂的莫过于两种操作系统下完全不同的快捷键体系。特别是Cmd/Ctrl键位的混乱&#xff0c;常常让人在复制粘…...

深度解析:Beyond Compare 5授权机制与密钥生成技术

深度解析&#xff1a;Beyond Compare 5授权机制与密钥生成技术 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen 在软件授权领域&#xff0c;Beyond Compare 5的RSA加密授权系统展现了商业软件保护…...

SAP资产会计数据迁移:除了AS91,你还需要检查这些关键配置(传输日期、抵销科目详解)

SAP资产会计数据迁移&#xff1a;AS91之外的7个关键配置陷阱与解决方案 当你在凌晨三点盯着屏幕上不平的资产折旧凭证时&#xff0c;AS91的简单操作指南显然已经不够用了。作为经历过数十个SAP上线项目的顾问&#xff0c;我发现90%的资产数据迁移问题都源于那些容易被忽略的后台…...

工业数智化转型路径:JBoltAI 工具与定制化服务实践

当前&#xff0c;我国工业数智化已进入高质量发展、规模化推广的新阶段&#xff0c;成为推动制造业转型升级、构建先进工业体系的核心动力。结合行业发展现状与企业实际需求&#xff0c;JBoltAI推出针对性数智化工具及定制服务&#xff0c;为工业企业转型提供实用支撑。一、工业…...

CentOS 7下OnlyOffice离线部署全攻略:从依赖包下载到一键配置(避坑指南)

CentOS 7下OnlyOffice离线部署全攻略&#xff1a;从依赖包下载到一键配置&#xff08;避坑指南&#xff09; 在企业内网或安全隔离环境中部署文档协作平台时&#xff0c;OnlyOffice凭借其开源特性和丰富的编辑功能成为首选方案。本文将深入探讨如何在CentOS 7系统中实现完全离线…...

OpenClaw镜像体验:无需本地安装快速测试Qwen3.5-4B-Claude

OpenClaw镜像体验&#xff1a;无需本地安装快速测试Qwen3.5-4B-Claude 1. 为什么选择云端镜像方案 上周我在本地尝试部署OpenClaw时&#xff0c;被Node版本冲突和系统权限问题折磨了整整两天。当看到星图平台提供预装好的OpenClawQwen3.5-4B-Claude镜像时&#xff0c;立刻决定…...

OpenClaw多模型切换技巧:GLM-4.7-Flash与Qwen3-32B混合调用实战

OpenClaw多模型切换技巧&#xff1a;GLM-4.7-Flash与Qwen3-32B混合调用实战 1. 为什么需要多模型切换 去年冬天&#xff0c;当我第一次尝试用OpenClaw自动处理周报时&#xff0c;发现一个有趣的现象&#xff1a;用同一个模型处理文本摘要和代码片段时&#xff0c;效果差异很大…...

实验结果与分析篇 | 本科/硕士必备,一文搞定实验结果与分析部分!基于改进 ConvNeXt 的农作物病虫害识别系统

前言 “代码跑通了&#xff0c;论文怎么写&#xff1f;”&#xff0c;这恐怕是无数 CV 算法/人工智能萌新在面对毕设或期刊投稿时最大的痛。纯缝合模型容易被拒&#xff08;看你写作能力了&#xff09;&#xff0c;实验分析写成了干巴巴的报流水账&#xff0c;缺乏深度的理论支…...

机器人路径规划算法之VFH算法详解+MATLAB代码实现

目录 一、 运作原理&#xff1a;三步把地图变成方向 1. 建图&#xff1a;构建直方图网格&#xff08;Histogram Grid&#xff09; 2. 降维&#xff1a;生成极坐标直方图&#xff08;Polar Histogram&#xff09; 3. 决策&#xff1a;代价函数与山谷选择 二、 算法演进&…...