当前位置: 首页 > 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…...

NotebookLM技能扩展:连接本地大模型实现智能文档处理

1. 项目概述与核心价值最近在折腾AI应用开发&#xff0c;特别是想把手头的本地大模型用起来&#xff0c;解决一些实际的文档处理问题。相信很多朋友和我一样&#xff0c;手头积累了大量笔记、报告、PDF文档&#xff0c;每次想从中快速找到特定信息或者进行归纳总结&#xff0c;…...

AI代理环境交互SDK:TypeScript实现标准化观察与动作接口

1. 项目概述&#xff1a;一个为AI代理构建交互式环境的TypeScript SDK如果你正在尝试构建一个能够与现实世界应用&#xff08;比如浏览器、IDE、甚至操作系统&#xff09;进行交互的AI代理&#xff0c;那么你很可能已经遇到了一个核心难题&#xff1a;如何让代理“看见”并“操…...

EnigmaVB封包实战:如何为你的Qt小工具制作一个‘绿色单文件版’?

EnigmaVB封包实战&#xff1a;打造极致便携的Qt单文件应用 每次分享自己开发的Qt小工具时&#xff0c;你是否也厌倦了那些繁琐的依赖文件&#xff1f;想象一下&#xff0c;当你的同事或朋友收到一个双击即可运行的独立exe文件时&#xff0c;他们的表情会有多惊喜。这就是Enigma…...

Express-Generator命令行选项详解:10个实用技巧快速提升开发效率

Express-Generator命令行选项详解&#xff1a;10个实用技巧快速提升开发效率 【免费下载链接】generator Express application generator 项目地址: https://gitcode.com/gh_mirrors/gen/generator Express-Generator是Node.js生态中最受欢迎的脚手架工具之一&#xff0…...

探索混沌之美:Chaos项目中逻辑斯蒂映射的三种可视化方法

探索混沌之美&#xff1a;Chaos项目中逻辑斯蒂映射的三种可视化方法 【免费下载链接】Chaos Visualizations of the connections between chaos theory and fractals through the logistic map; made for Veritasium YouTube video 项目地址: https://gitcode.com/gh_mirrors…...

告别SkewT斜温图:用Python的metpy库手把手绘制国内气象局标准T-LnP探空图

用Python的metpy库绘制符合国内气象标准的T-LnP探空图全指南 气象数据可视化是天气分析和预报中不可或缺的一环。在国内气象业务和教学中&#xff0c;T-LnP图&#xff08;温度-对数压力图&#xff09;作为探空分析的标准工具已有数十年历史。然而&#xff0c;许多气象工作者在使…...

基于MPU6050角速度动态阈值的自适应计步算法实现

1. MPU6050与动态计步算法入门 你可能已经见过各种智能手环和运动设备的计步功能&#xff0c;但有没有想过它们是如何准确统计步数的&#xff1f;今天我要分享的是一种基于MPU6050传感器的动态阈值计步算法实现。这种方案特别适合手环、腿环这类穿戴设备&#xff0c;核心思路是…...

短视频去重怎么做才有效?2026年AI工具对比与实操指南

在短视频平台算法日益严格的背景下&#xff0c;简单搬运或轻微修改的视频越来越难获得流量推荐。尤其对于电商带货、知识博主和矩阵号运营者而言&#xff0c;“如何有效去重”已成为内容能否过审、账号能否存活的关键问题。许多创作者尝试手动调色、加滤镜、裁剪画面&#xff0…...

一个开源免费的轻量Blazor UI控件库

bit BlazorUI组件原生、易于定制,并且在所有交互式Blazor模式(WASM、服务器、混合、预渲染)中无缝运行,节省时间,使开发过程更愉快。 bit BlazorUI是一个专为 Blazor 开发的高性能原生 UI 组件库,可以帮助开发者高效构建高质量应用。它拥有 80 多个高性能组件,总体体积…...

Windows APK安装器:告别模拟器,直接在Windows上安装安卓应用

Windows APK安装器&#xff1a;告别模拟器&#xff0c;直接在Windows上安装安卓应用 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾经想在Windows电脑上运行安…...