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

相关推荐
隐于花海,等待花开5 小时前
窗口函数之排序函数详细解读及示例
大数据·数据库·hive
数字化顾问5 小时前
(87页PPT)数据战略规划(附下载方式)
大数据·数据仓库·数据挖掘
隐于花海,等待花开6 小时前
Hive 正则函数详解与示例
数据仓库·hive·hadoop
隐于花海,等待花开6 小时前
Hive专题:数据开发面试高频题(TopN、留存、连续登录等)
hive·hadoop·面试
木心术18 小时前
大数据处理技术:Hadoop与Spark核心原理解析
大数据·hadoop·分布式·spark
SelectDB技术团队1 天前
基于 SelectDB 实现 Hive 数据湖统一分析:洋钱罐全球一体化探索分析平台升级实践
数据仓库·数据分析·apache doris·selectdb
爱喝水的鱼丶1 天前
SAP-ABAP:深入浅出 SAP AFVC 表:生产订单工序的核心数据仓库
运维·服务器·数据仓库·sap·abap·pp
KANGBboy1 天前
数仓数据治理
数据仓库
极光代码工作室1 天前
基于数据挖掘的高校图书借阅分析系统
大数据·hadoop·python·数据分析·数据可视化
zhixingheyi_tian1 天前
Hadoop 之 native 库
大数据·linux·hadoop·分布式