hive将时间字符串转换为timestamp的几种写法

写法一

sql 复制代码
select from_utc_timestamp(from_unixtime(unix_timestamp('2023-8-7 9:38:10 UTC+08:00', 'yyyy-MM-dd HH:mm:ss')), 'UTC');

写法二

sql 复制代码
select cast(unix_timestamp('2023-8-7 9:38:10 UTC+08:00', 'yyyy-MM-dd HH:mm:ss') as timestamp);

写法三

sql 复制代码
select cast(trim(split(upper('2023-10-31 4:46:40 UTC+0800'), 'UTC')[0]) as timestamp); 

这种方式我觉得过于复杂了。

使用到的函数

unix_timestamp

  • 函数签名
bash 复制代码
bigint unix_timestamp(string datetime, string format)
  • 函数返回值

    bigint类型的时间戳整数

  • 函数入参

    第一个参数是string类型的时间,比如'2024-01-10 20:44:00'。

    第二个参数是string类型的时间格式化的格式,比如'yyyy-MM-dd HH:mm:ss'。

  • 函数使用

bash 复制代码
-- 将给定时间字符串转换为指定格式的时间戳数字
select unix_timestamp('2023-12-4 4:45:12 UTC+08:00', 'yyyy-MM-dd HH:mm:ss');
-- 输出为1701619200
bash 复制代码
-- 获取当前时间戳
select unix_timestamp();
  • 注意点
    方法的返回值在spark中可以直接强转为timestamp。
    在hive中不能直接转为timestamp,强转会转为很奇怪的时间。
    如果要在hive中将此函数返回值转为timestamp,则需要使用cast函数转为timestamp。

from_unixtime

  • 函数签名
bash 复制代码
string from_unixtime(bigint time, string fromat)
  • 函数返回值

  • 函数参数

    bigint类型的时间戳。

    string类型的格式,用于指定函数返回值的格式,可以省略,如果省略,则默认为'yyyy-MM-dd HH:mm:ss'

  • 函数使用

bash 复制代码
select from_unixtime(1701619200, 'yyyy-MM-dd HH:mm:ss');
bash 复制代码
-- 省略format
select from_unixtime(1701619200);

测试

可以使用以下字符串作为输入进行测试。

以下各市的字符串经过在beeline客户端进行测试,均能转换为timestamp,且时间精度不会丢失

sql 复制代码
2023-8-31 15:40:56

-- 能够将带有UTC格式的字符串转换为时间戳,然后再转换为timestamp。
-- 但是会有8个小时的误差,上述的方法貌似是直接把UTC字符串给去掉了。                                                                                                                                                          
2023-12-4 4:45:12 UTC+0800

2023-10-17 3:38:1 UTC+0800

2023-5-3 13:7:0

2024-01-10 20:44:00.048

参考

unix_timestamp 时间戳函数用法(hive)

相关推荐
学代码的CJY15 小时前
CJY 知识工作台:博客写作使用指南
数据仓库·知识图谱
Q264336502320 小时前
【有源码】基于文本挖掘的消费者金融投诉主题发现与风险预警研究,基于Python的CFPB消费者投诉数据可视化分析系统
大数据·hadoop·机器学习·数据挖掘·spark·毕业设计·课程设计
喻师傅21 小时前
Apache Hudi 概述:从 Parquet 更新难题到数据湖 Upsert
大数据·数据仓库·big data
Q26433650231 天前
【有源码】基于机器学习的商场商铺运营分群与可视化分析研究 基于Spark的商场商铺经营效率分析与可视化
大数据·hadoop·机器学习·数据挖掘·数据分析·spark·毕业设计
Gl�ria1 天前
Hadoop MapReduce / Hive 场景:ReduceTask 热点 Key 排查
运维·hadoop·数据倾斜
Q26433650232 天前
【有源码】基于机器学习的电信网络诈骗话术语义识别与可视化分析系统 XGBoost算法+Hadoop+Spark
大数据·hadoop·算法·机器学习·spark·毕业设计·课程设计
Q26433650232 天前
【有源码】基于 Hadoop 的强化学习智能体轨迹数据挖掘与可视化分析系统大数据毕设项目
大数据·hadoop·机器学习·数据挖掘·spark·课程设计·数据可视化
Q26433650232 天前
【有源码】基于大数据的药品多维度属性分析可视化系统 基于Spark的药品属性聚类与关联规则可视化分析系统
hadoop·机器学习·数据挖掘·spark·毕业设计·课程设计·大数据项目
网络豆2 天前
Apache Hive 鸿蒙 PC 适配全记录:以 Qt 客户端打通 HiveQL、监控与元数据访问
hive·apache·harmonyos
Q26433650232 天前
【有源码】基于大数据的零售交易者行为特征与生存状况数据分析及可视化 Hadoop+Spark大数据项目
大数据·hadoop·信息可视化·数据挖掘·数据分析·spark·毕业设计