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

hive/spark sql中unix_timestamp 函数的坑以及时间戳相关的转换

我用的是hive版本是3.1.3,spark版本是3.3.1,它们的unix_timestamp 函数在同样的语句下转换出来的时间戳是完全不同的,如下试验所示

1.unix_timestamp 函数的坑

在这里插入图片描述
上图试验中我同样的计算 2025-07-11 10:00:00 时间点对应的时间戳,但是尽管在我换了时区的情况下,他们得到的是同一个答案,都是 1752228000 ,没错,这个时间戳就是UTC+0时间下的对应2025-07-11 10:00:00的时间戳,这点就有点坑,因为我们变化了时区,肯定是想要它转成对应时区下的时间戳。
spark
在spark-sql中是会根据所给的时间戳改变的,这里有一个细节,特别需要注意,spark.sql.session.timeZone Zone一定要大写,如果小写的话,就会跟hive一样达不到随着时间戳改变而变化

2. 时间戳和对应时区的时间之间的转换

首先需要明确的一点是时间戳的定义:它是指从自"Unix纪元"(1970-01-01 00:00:00 UTC)以来经过的秒数或毫秒数 所有它是一个绝对值,不会应为时区的变化而变化,而时区是指全球各个地区自己定义一天时间的方法。

基于上面对时间戳和时区概念的理解,我们提出一个结论,给定一个时间戳比如 1752163200 ,它是绝对的,也是不会变化的,根据这个时间戳,然后各地区根据自己所在的时区可以解析出不同的时间,比如,它表示 Asia/Shanghai(UTC+8) 时区的 2025-07-11 00:00:00 ,同时也表示Asia/Seoul(UTC+9) 时区的2025-07-11 01:00:00,同时也表示America/New_York(UTC-4)2025-07-10 12:00:00时区的等等
这是时间戳转根据时区转时间,我们可以明显看出来在时间戳转时间的时候,如果知道了一个转的结果,比如知道 Asia/Shanghai(UTC+8) 转出来的时间是 2025-07-11 00:00:00 ,那对应的 America/New_York(UTC-4) 的时间不用再用时间戳转,直接用目标时区的值(-4)减去前面基础时区的值(+8),得到-12(-4-8=-12),最后用基础时间加上前面计算出来的值就可以了,也就是2025-07-11 00:00:00加上-12个小时也就是2025-07-10 12:00:00。
如果是时间转时间戳的时候,就正好相反,用基础时区的值减去目标时区的值(由于这是时间戳计算,最后需要进行6060处理),然后和对基础时区转出来的时间戳做加法(减出来是负数就是减)

http://www.dtcms.com/a/273691.html

相关文章:

  • AI技术正以前所未有的速度重塑职业生态与行业格局,尤其在自动化测试领域,AI驱动的测试框架通过智能化、低代码化重构传统测试流程。
  • PySpark中python环境打包和JAR包依赖
  • spark3 streaming 读kafka写es
  • Google Benchmark 介绍和使用指南
  • 流批一体的“奥卡姆剃刀”:Apache Cloudberry 增量物化视图应用解析
  • CReFT-CAD 笔记 带标注工程图dxf,png数据集
  • 【EGSR2025】材质+扩散模型+神经网络相关论文整理随笔(四)
  • Jenkins 项目类型及配置项
  • FPGA实现SDI转LVDS视频发送,基于GTP+OSERDES2原语架构,提供工程源码和技术支持
  • 资源分享-FPS, 矩阵, 骨骼, 绘制, 自瞄, U3D, UE4逆向辅助实战视频教程
  • 飞算 JavaAI 深度体验:开启 Java 开发智能化新纪元
  • 【拓扑空间】示例及详解4
  • python的社区残障人士服务系统
  • 了解环网式 CAN 转光纤中继器
  • BPE(Byte Pair Encoding)分词算法
  • leetcode-hot100(283.移动零)
  • 政安晨【零基础玩转开源AI项目】ACE-Step —— 迈向音乐生成基础模型的重要一步:AI自动谱曲与自动演唱的免费开源框架部署实践
  • RLHF:人类反馈强化学习 | 对齐AI与人类价值观的核心引擎
  • python实现DoIP基本通信(收发报文)
  • 第十二章:网络编程
  • Typescript -字面量类型
  • Linux的基础I/O
  • 买小屏幕的时候注意避坑
  • [Java 17] 无模版动态生成 PDF:图片嵌入与动态表格渲染实战
  • Linux磁盘限速(Ubuntu24实测)
  • 算法学习笔记:17.蒙特卡洛算法 ——从原理到实战,涵盖 LeetCode 与考研 408 例题
  • cnpm exec v.s. npx
  • C语言常见面试知识点详解:从入门到精通
  • 亿级流量下的缓存架构设计:Redis+Caffeine多级缓存实战
  • Web安全 - 基于 SM2/SM4 的前后端国产加解密方案详解