IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 日期转换与时间戳转换(spark与persto的区别) -> 正文阅读

[大数据]日期转换与时间戳转换(spark与persto的区别)

日期转换与时间戳转换

注释:时间戳是没有时区的概念的

1 spark

1.1时区设置

set spark.sql.session.timeZone=GMT+8; --设置为东八区时间
set spark.sql.session.timeZone=UTC; --设置为UTC时间

1.2时间戳格式化为日期

from_unixtime(floor(ts/1000),'yyyy-MM-dd')
--注释,使用此方法转换时间时,默认使用的是集群的时区(时区设置参考1.1)
--次函数的时间戳为10位的

1.3时间戳跨时区转换日期(集群时区与要转换的目的时区不一致问题)

假设集群默认时区UTC时区,要转化为东八区时间

方法一(需要指定时区):
1 在spark-sql中执行
set spark.sql.session.timeZone=GMT+8; --设置为东八区时间
2 select from_unixtime(floor(ts/1000),'yyyy-MM-dd') ...
获取一个时间戳

在这里插入图片描述

--在不指定时区的情况下,默认转换为集群时区时间(错误的结果)
select from_unixtime(1627354133,'yyyy-MM-dd HH:mm:ss')
--结果
from_unixtime(CAST(1627354133 AS BIGINT), yyyy-MM-dd HH:mm:ss)
2021-07-27 02:48:53
--设置东八区
set spark.sql.session.timeZone=UTC;
select from_unixtime(1627354133,'yyyy-MM-dd HH:mm:ss');

--结果
spark-sql> set spark.sql.session.timeZone=GMT+8;
key	value
spark.sql.session.timeZone	GMT+8

from_unixtime(CAST(1627354133 AS BIGINT), yyyy-MM-dd HH:mm:ss)
2021-07-27 10:48:53

方法二(不需要设置时区):
select from_utc_timestamp(from_unixtime(1627354133,'yyyy-MM-dd HH:mm:ss'),'GMT+8')
--结果
from_utc_timestamp(CAST(from_unixtime(CAST(1627354133 AS BIGINT), yyyy-MM-dd HH:mm:ss) AS TIMESTAMP), GMT+8)
2021-07-27 10:48:53

1.4日期格式转换

select from_unixtime(unix_timestamp('20210704','yyyymmdd'),'yyyy-mm-dd') ;--2021-07-04
--零时区转换任意时区的时间
from_utc_timestamp(from_unixtime(ts/1000,'yyyy-MM-dd HH:mm:ss'),tz) 

1.5动态指定时区转换

--tz为数据中的时区参数,在使用该方法是需要将集群时区指定为UTC
set spark.sql.session.timeZone=UTC;
select 
from_utc_timestamp(from_unixtime(ts/1000,'yyyy-MM-dd HH:mm:ss'),'GMT+8') as db
,from_utc_timestamp(from_unixtime(ts/1000,'yyyy-MM-dd HH:mm:ss'),tz) as biz,ts,tz

2 presto-sql

1时间戳转换日期

format_datetime(from_unixtime(cast(ts as bigint)/1000,'GMT+8'),'yyyy-MM-dd')
format_datetime(from_unixtime(cast(ts as bigint)/1000,'GMT+8'),'yyyy-MM-dd')
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-01-14 02:03:13  更:2022-01-14 02:03:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 13:26:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码