【Hive SQL】时间戳格式化、时间字符串转换格式化、时区切换(Mysql\Hive SQL\Athena)

文章目录

    • 一、日期格式化
      • 1、时间戳格式化
      • 2、日期字符串格式化
      • 3、时区切换
      • 4、时区列表

一、日期格式化

本文主要记录 [Mysql\ Hive SQL\ Athena] 时间戳转换、日期格式化、时区转换各种数据数据操作

1、时间戳格式化

1、毫秒值转 yyyy-MM-dd HH:mm:ss

  • Mysql
select FROM_UNIXTIME(1617187200000/1000,'%Y-%m-%d %H:%i:%s') as ts_format
  • Hive SQL
select FROM_UNIXTIME(cast(1617187200000/1000 as bigint),'yyyy-MM-dd HH:mm:ss') as ts_format
  • Athena
// 方式1 返回值 -> timestamp
select FROM_UNIXTIME(1617187200000/1000) as ts_format
// 方式2 返回值 -> varchar
select date_format(FROM_UNIXTIME(1617187200000/1000),'%Y-%m-%d %H:%i:%s') as ts_format

2、日期字符串格式化

1、字符串日期格式化

  • Mysql
// 字符串转换成日期:str_to_date(str,format)
// 日期转换成字符串:date_format(date,format)
// 时间转换成字符串:time_format(time,format)
select date_format(str_to_date('09-13-2024','%m-%d-%Y'),'%Y%m%d')// 八位转10位 + 时分秒
select date_format('20240501','%Y-%m-%d %H:%i:%s')// 八位转10位
select date_format('20240501','%Y-%m-%d')
  • Hive SQL
// 方式1:使用 data_format 
// 8 位日期格式,maxcomputer 可用 to_date 转换
select date_format(to_date('20240501','yyyyMMdd'),'yyyy-MM-dd');// 10位日期格式 hive 可以使用 to_date 后进行format格式化
select date_format(to_date('2024-05-01'),'yyyyMMdd');// 方式2:使用 from_unixtime
select from_unixtime(unix_timestamp('20240501','yyyyMMdd'),'yyyy-MM-dd');
  • Athena
select date_parse('2024/05/01/05', '%Y/%m/%d/%H')
-- 2024-05-01 05:00:00.000select date_format(date_parse('20240501','%Y%m%d'),'%Y-%m-%d')
-- 2024-05-01

3、时区切换

将一个UTC时区的时间戳转换成一个指定时区的时间戳,即将一个UTC时区的时间戳按照指定的时区显示

  • Mysql
// CONVERT_TZ(dt,from_tz,to_tz)select from_unixtime(1617187200000/1000,'%Y-%m-%d %H:%i:%s') as ori_time ,convert_tz(FROM_UNIXTIME(1617187200000/1000,'%Y-%m-%d %H:%i:%s'),"+00:00","+8:00") as to_time// 结果
"""
+---------------------+---------------------+
|ori_time             |to_time              |
+---------------------+---------------------+
|2021-03-31 10:40:00  |2021-03-31 18:40:00  |
+---------------------+---------------------+
"""
  • Hive SQL
from_utc_timestamp(expr, timeZone)
// expr:一个 TIMESTAMP 表达式,带有 UTC 时间戳。
// timeZone:一个为有效时区的 STRING 表达式。// 转中国时区
select from_unixtime(cast(1617187200000/1000 as bigint),'yyyy-MM-dd HH:mm:ss') as ori_time,from_utc_timestamp(from_unixtime(cast(1617187200000/1000 as bigint),'yyyy-MM-dd HH:mm:ss'), 'PRC') as to_time
"""
+---------------------+---------------------+
|ori_time             |to_time              |
+---------------------+---------------------+
|2021-03-31 10:40:00  |2021-03-31 18:40:00  |
+---------------------+---------------------+
"""// 方式2: 根据当前时区与目标时间差,对目标时间戳 + 对应时间差值select from_unixtime(cast(1617187200000/1000 as bigint),'yyyy-MM-dd HH:mm:ss') as ori_time,from_unixtime(cast(1617187200000/1000 as bigint) + 8*60*60,'yyyy-MM-dd HH:mm:ss') as to_time
"""
+---------------------+---------------------+
|ori_time             |to_time              |
+---------------------+---------------------+
|2021-03-31 10:40:00  |2021-03-31 18:40:00  |
+---------------------+---------------------+
"""

Hive官网说明

阿里云文档FROM_UTC_TIMESTAMP 函数说明

  • Athena

// 方式1 from_unixtime(unixtime, zone) → timestamp(3) 
// 方式2 timestamp AT TIME ZONE 'zone'
// 方式3 当前时间戳 + 时区差
select from_unixtime(1617187200000/1000) as ori_time,from_unixtime(1617187200000/1000, 'PRC') as to_time1,from_unixtime(1617187200000/1000) AT TIME ZONE 'PRC' as to_time2,from_unixtime(1617187200000/1000 + 8*60*60) as to_time3,date_format(from_unixtime(1617187200000/1000, 'PRC'),'%Y-%m-%d %H:%i:%s') as to_time_format"""
+-------------------------+-----------------------------+-----------------------------+-------------------------+-------------------------+
|ori_time                 |to_time1                     |to_time2                     |to_time3                 |to_time_format           |
+-------------------------+-----------------------------+-----------------------------+-------------------------+-------------------------+
|2021-03-31 10:40:00.000  |2021-03-31 18:40:00.000 PRC  |2021-03-31 18:40:00.000 PRC  |2021-03-31 18:40:00.000  |2021-03-31 18:40:00.000  |
+-------------------------+-----------------------------+-----------------------------+-------------------------+-------------------------+
"""

Athena Date and time functions and operators 官网

4、时区列表

1:阿里云文档时区列表

2:timeanddate 时区列表

3:Athena 支持的时区列表

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

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

相关文章

AXI接口简介

AXI接口,全称为Advanced eXtensible Interface,是ARM公司推出的一种高性能、低成本、可扩展的高速总线接口。AXI接口是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)高级微控制器总线架构的一部分。2003年发布了…

股票回购(Share Repurchase)是什么?中英双语介绍

股票回购 中文版 股票回购是指一家金融公司使用其现金储备从公开市场上回购自身股票的行为。这一操作通常有以下几个原因: 提升股价:当公司认为其股票被市场低估时,通过减少市场上的流通股数量,可以提升每股的市场价值。优化资…

RK3568平台(USB篇)UVC驱动分析

一.UVC简介 摄像头分为两类: 1.CAMER接口的摄像头; 2.USB接口接口的摄像头; 这里主要介绍usb摄像头的设备驱动程序。 UVC全称为USB Video Class,即:USB视频类,是一种为USB视频捕获设备定义的协议标准。…

详解ApplicationRunner和CommandLineRunner

一、前言 springBoot框架项目,有时候有预加载数据需求——提前加载到缓存中或类的属性中,并且希望执行操作的时间是在容器启动末尾时间执行操作。比如笔者工作中遇到了一个预加载redis中的缓存数据,加载为java对象。针对这种场景&#xff0c…

调试解析直播弹幕消息protobuf内容,一步一步教你debug查看PushFrame和Response解码在哪里

我们知道直播间的弹幕消息是通过websocket传输的,而且传输的并不是明文数据,而是protobuf消息,至于为什么使用这个protobuf消息,因为它是二进制传输,更快更稳,相对于直播这种实时性比较高的要求&#xff0c…

spring-boot-starter-data-redis是否支持reactive响应式编程

开源项目SDK:https://github.com/mingyang66/spring-parent 个人文档:https://mingyang66.github.io/raccoon-docs/#/ spring-boot-starter-data-redis: 使用传统的基于阻塞的I/O编程模型,这意味着当你调用Redis操作时&#xff0…

【24考研·交通】我的考研经历

文章目录 一、考前准备二、政治备考三、英语一备考四、数学一备考五、运筹学备考六、复试/调剂七、结语 距离24考研上考场过去快半年了,距离我拟录取也两个月多了,现在回想起来,最大的感受是:好像做了一场大梦。 其实这篇文章在考…

PLL输出频率之间为什么会相互影响

这个问题触及了PLL(锁相环)设计的核心挑战之一。让我们逐步分析这个问题: PLL的基本结构: PLL通常包含一个压控振荡器(VCO)、分频器、鉴相器和环路滤波器。VCO产生一个高频时钟,然后通过不同的分…

Java异常处理详解【高级篇】

Java异常处理详解【高级篇】 Java异常处理详解【高级篇】1. 自定义异常类2. 异常处理最佳实践3. 异常链与异常传播4. 异常处理与并发编程5. 资源管理与异常6. 异常处理框架Java异常处理详解【高级篇】 异常处理在Java编程中扮演着至关重要的角色,特别是在大型应用程序或系统开…

SQL-DDL操作

数据库操作 登录MySQL PS D:\WorkSpace\MachineLearning\DL_learning> mysql -u root -p Enter password: ****** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 12 Server version: 8.0.37 MySQL Community Server - GPLCopy…

61、Flink 的 Histogram 累加器代码示例

1、概述 Histogram 是 key-value 累加器。 2、代码示例 import org.apache.flink.api.common.JobExecutionResult; import org.apache.flink.api.common.accumulators.Histogram; import org.apache.flink.configuration.Configuration; import org.apache.flink.streaming.…

Profibus协议转profinet协议网关模块连接电机保护器与PLC通讯

一、背景 工业通讯中常见的协议有:Modbus协议,ModbusTCP协议,Profinet协议,Profibus协议,Profibus DP协议,EtherCAT协议,EtherNET协议等在现代工业控制系统中具有重要的角色。而Profibus协议转…

Horror病毒原理和解析【附靶场+网安学习视频】

Windows XP Horror Edition:这是一种伪装成Windows XP更新的应用程序,实际上会安装恶意软件。一旦运行,它会显示一个假更新,完成后屏幕会显示各种恐怖效果和文字。这个程序会更改桌面背景、图标和系统设置,甚至尝试重写…

不能创建第三个变量,实现两个数的交换

目录 常规实现两个数的交换(如:交换变量a和变量b) 方法一:加减法 方法二:异或操作符 常规实现两个数的交换(如:交换变量a和变量b) 创建一个临时变量tmp,先将其中一个…

matlab 计算导数

边界提取 一、算法原理1、主要函数2、参考文献二、代码实现三、结果展示四、参考链接本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法原理 1、主要函数 Y = diff(X)计算沿大小不等于 1 的第一个数组维度的 X X…

STM32——使用TIM输出比较产生PWM波形控制舵机转角

一、输出比较简介: 只有高级定时器和通用寄存器才有输入捕获/输出比较电路,他们有四个CCR(捕获/比较寄存器),共用一个CNT(计数器),而输出比较功能是用来输出PWM波形的。 红圈部分…

python内网上传下载工具

python内网上传下载工具 利用python的nicegui写了一个内网下载工具,支持上传和下载。 这样的工具很多,但是利用这个模块可以用很少的代码做一个比较好看的页面。 上传的文件会存在当前目录下生成一个upload文件夹中;下载则是读取upload文件夹…

2023年全国职业院校技能大赛(高职组)“云计算应用”赛项赛卷9(公有云)

#需要资源(软件包及镜像)或有问题的,可私聊博主!!! #需要资源(软件包及镜像)或有问题的,可私聊博主!!! #需要资源(软件包…

Stable Diffusion【真人模型】:人像光影摄影极限写实真实感大模型

大家好,我是极客菌 今天和大家分享一个基于SD1.5的真人大模型:人像光影摄影极限写实真实感大模型。 该模型具有以下特点: 真实肤感(在面部肌理和皮肤肌理上均有加强学习,拒绝ai出图假的问题) 永不脱妆&a…

5年工作经验面试经验以及面试题分享

第一家面试题 评价 全是八股文 面试题 MySQL索引类型 索引结构 联合索引可以设置索引类型 不同索引性能差异巨大 基础索引有哪些 B Tree索引和Hash索引 Redis基本数据结构 List是原子的吗 原子性和可见性区别是什么 MySQL的存储过程和视图 MySQL性能优化有哪些 MySQL的存储…