hive 中時間戳與時間字串的相互轉換

2021-09-11 19:20:42 字數 1825 閱讀 3988

時間戳是資料庫常用的存放日期的形式之一,表示從 utc 時間』1970-01-01 00:00:00』開始到現在的秒數,與常規時間格式如 『2018-01-01 00:00:00』可以相互轉換,方法如下。

一、unix_timestamp 函式用法

1、unix_timestamp() 返回當前時間戳。另外,current_timestamp() 也有同樣作用。

hive> select unix_timestamp();

unix_timestamp(void) is deprecated. use current_timestamp instead.

ok1530241405

time taken: 0.237 seconds, fetched: 1 row(s)12

3452、unix_timestamp(string date) 返回 date 對應的時間戳,date 格式必須為 yyyy-mm-dd hh:mm:ss。

hive> select unix_timestamp('2018-06-29 00:00:00');

ok1530201600

time taken: 0.232 seconds, fetched: 1 row(s)12

343、unix_timestamp(string date, string format) 返回 date 對應的時間戳,date 格式由 format 指定。

hive> select unix_timestamp('2018/06/29 09', 'yyyy/mm/dd hh');

ok1530234000

time taken: 0.755 seconds, fetched: 1 row(s)12

34二、from_unixtime 函式用法

1、from_unixtime(int/bigint timestamp) 返回 timestamp 時間戳對應的日期,格式為 yyyy-mm-dd hh:mm:ss。

hive> select from_unixtime(1000000000);

ok2001-09-09 09:46:40

time taken: 0.316 seconds, fetched: 1 row(s)12

342、from_unixtime(int/bigint timestamp, string format) 返回 timestamp 時間戳對應的日期,格式由 format 指定。

hive> select from_unixtime(1000000000, 'yyyy/mm/dd hh');

ok2001/09/09 09

time taken: 0.24 seconds, fetched: 1 row(s)12

34三、「毫秒」時間戳的特殊處理

有時候,存放的時間戳不是秒數,而是毫秒數,因此轉換前需要除以1000。

同理,時間轉成時間戳時,也需要乘以 1000。

select

timestamps,

from_unixtime(cast(timestamps/1000 as int))

from

test_table

where

timestamps > unix_timestamp('2018-06-25 09:00:00') * 1000

and timestamps < unix_timestamp('2018-06-25 09:10:00') * 100012

3456

78結果為: 

如何辨別時間戳是秒數還是毫秒數

2001-09-09 09:46:40 ~ 2286-11-21 01:46:40 之間的時間戳,都是10位數。

Hive 中 時間戳,字串轉換

select from unixtime cast 1597651229344 1000 asint yyyy mm dd hh mm ss 使用函式 str to date str,format 使用示例 select from h hotelcontext where now between s...

python時間字串與時間戳的轉換

import datetime import time print datetime.datetime.now year 返回當前時間年 print datetime.datetime.now month 返回當前時間月 print datetime.datetime.now day 返回當前時間日...

python中時間字串與時間戳的相互轉換

時間字串轉換為時間戳 python 純文字檢視 複製 12 3 4 5 6 7 8 時間字串轉換為時間戳 a 2013 10 10 23 40 00 將其轉換為時間陣列 importtime timearray time.strptime a,y m d h m s 轉換為時間戳 timestamp...