hive中时间戳与时间字符串相互转换的方法教程

时间戳是数据库常用的存放日期的形式之一,表示从 UTC 时间'1970-01-01 00:00:00'开始到现在的秒数,与常规时间格式如 '2018-01-01 00:00:00'可以相互转换,方法如下。

一、unix_timestamp 函数用法

1、unix_timestamp() 返回当前时间戳。另外,current_timestamp() 也有同样作用。

2、unix_timestamp(string date) 返回 date 对应的时间戳,date 格式必须为 yyyy-MM-dd HH:mm:ss。

matlab 复制代码
hive> select unix_timestamp('2018-06-29 00:00:00');
	OK
	1530201600

3、unix_timestamp(string date, string format) 返回 date 对应的时间戳,date 格式由 format 指定。

matlab 复制代码
hive> select unix_timestamp('2018/06/29 09', 'yyyy/MM/dd HH');
	OK
	1530234000

二、from_unixtime 函数用法

1、from_unixtime(int/bigint timestamp) 返回 timestamp 时间戳对应的日期,格式为 yyyy-MM-dd HH:mm:ss。

matlab 复制代码
hive> select from_unixtime(1000000000);
OK
2001-09-09 09:46:40

2、from_unixtime(int/bigint timestamp, string format) 返回 timestamp 时间戳对应的日期,格式由 format 指定。

matlab 复制代码
hive> select from_unixtime(1000000000, 'yyyy/MM/dd HH');
OK
2001/09/09 09

三、"毫秒"时间戳的特殊处理

有时候,存放的时间戳不是秒数,而是毫秒数,因此转换前需要除以1000。

同理,时间转成时间戳时,也需要乘以 1000。

matlab 复制代码
select
    timestamps,
    from_unixtime(cast(timestamps/1000 as int))
from
    test_table

如何辨别时间戳是秒数还是毫秒数

2001-09-09 09:46:40 ~ 2286-11-21 01:46:40 之间的时间戳,都是10位数。

因此,我们这个时代使用的时间戳一般都是10位。如果遇到13位的时间戳,则为毫秒数。

文章来源: https://www.2cto.com/database/201806/757785.html

相关推荐
卷毛迷你猪1 天前
快速实验篇(A11)数据集成与多维分析:从单实验产出到跨实验宽表
hive·hadoop
西木莉1 天前
数据仓库概述
数据仓库
卷毛迷你猪2 天前
快速实验篇(A10)短序列上 SPI 的失效机制
hadoop
Francek Chen2 天前
【大数据处理与分析】数据仓库Hive:04 数据仓库Hive概述
大数据·数据仓库·hive·hadoop·分布式
Gl�ria2 天前
Hadoop/YARN 集群缩容:下线DN节点
大数据·hadoop·分布式
计算机源码社2 天前
基于大数据技术的台北市住宅价格影响因素挖掘与可视化分析-基于Python与Hadoop的台北市住宅价格数据仓库构建与可视化
大数据·hadoop·python·数据分析·spark·毕业设计·数据可视化
计算机源码社3 天前
基于Hadoop+Spark的乳腺癌病理数据可视化分析系统 基于K-Means聚类与PCA降维的乳腺癌形态特征分析系统
大数据·hadoop·python·数据分析·spark·毕业设计·数据可视化
Moshow郑锴3 天前
从“水库”到“直饮水站”:重新理解 Data Mart 与 Data Lake、Data Lakehouse、Data Warehouse 的区别
数据仓库·data·湖仓一体
躺柒3 天前
读数据架构知识体系指南01关系数据仓库(上)
数据仓库·架构·数据分析·spark·数据湖·关系数据库·企业数据仓库
卷毛迷你猪4 天前
快速实验篇(A9-2)Python vs MapReduce:小批量任务的工具选择
大数据·hadoop