时间戳
定义:格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数,表示为:1970-01-01 00:00:00 UTC。
它称为Unix时间(Unix time)、POSIX时间(POSIX time)。
从定义可以看到,全球相同时刻,不管你是什么时区,时间戳是一致的,时间戳是不会跟着时区的改变而改变。用时间戳来表示时间全球都是一致的
相同时间戳,在不同时区,时间是不同的:如 1520411719 时间戳,对应北京时间是:2018-03-07 16:35:19 GMT+8,对应此时的美国华盛顿时间是:2018-03-07 03:35:19 GMT-5,这也是我们常说的时间。
格林威治时间(GMT)
是指位于英国伦敦郊区的皇家格林尼治天文台当地的平太阳时,因为本初子午线被定义为通过那里的经线。
协调世界时(UTC)
协调世界时(英语:Coordinated Universal Time简称UTC)是最主要的世界时间标准,其以原子时秒长为基础,在时刻上尽量接近于格林尼治标准时间。
协调世界时是世界上调节时钟和时间的主要时间标准,它与0度经线的平太阳时相差不超过1秒[4],并不遵守夏令时。
协调世界时是最接近格林威治标准时间(GMT)的几个替代时间系统之一。
对于大多数用途来说,UTC时间被认为能与GMT时间互换。
比如,现在有一条日志,其中的时间戳 为 1570987357 (该时间戳是我从 https://tool.lu/timestamp/ 获取的),
那么这个时间戳对应的 GMT 时间为 : 2019-10-13 17:22:00 【可通过如下SQL来实现】
select from_unixtime(1570987357,\'yyyy-MM-dd HH:mm:SS\');
-- 2019-10-13 17:22:00
但是我本地的时间(北京时间)为 2019-10-13 01:22:00,
这也验证了 hive 函数 from_unixtime 得到的是 GMT时间,再通过GMT + 时区 分方式得到该时间戳的对应的本地时间