HIVE上與時間相關的操作

2021-10-19 07:56:02 字數 2811 閱讀 3201

---------------------------------------------hive中時間相關的函式操作------------------

-- 把指定的字串轉時間 -年月(返回值錯誤)

select from_unixtime(unix_timestamp(

'201806'

,'yyyymm'),

'yyyymm');

-- 把指定字串轉時間 -年月日

select from_unixtime(unix_timestamp(

'20180605'

,'yyyymmdd'),

'yyyymmdd');

-- 把指定字串轉時間 -年月,再進行運算,運算結束後再轉回字串年月

select substr(regexp_replace(string(add_months(from_unixtime(unix_timestamp(

'201806'

,'yyyymm'),

'yyyy-mm-dd'),

-2))

,"-",""

),1,

6)----對於yyyy-mm-dd hh:mi:ss格式的string1

使用select from_unixtime(unix_timestamp(string1 ,

'yyyymmdd'),

'yyyymmdd'

) 的查詢結果是錯誤的。

需要使用

select from_unixtime(unix_timestamp(string1 ,

'yyyy-mm-dd'),

'yyyy-mm-dd'

)--- 系統當前時間 (日期格式)

select from_unixtime(unix_timestamp(),

'yyyymm');

select from_unixtime(unix_timestamp(),

'yyyymmdd');

-- 系統當前時間 轉字串

select string(from_unixtime(unix_timestamp(),

'yyyymm'))

;select string(from_unixtime(unix_timestamp(),

'yyyymmdd'))

;---- 系統年月做運算:年-月-日

select add_months(from_unixtime(unix_timestamp(),

'yyyy-mm-dd'),

-2);

--- 20201209

select add_months(from_unixtime(unix_timestamp(),

'yyyymmdd'),

-2);

--- null

-- --系統年月做運算, 得到string型別年月

select substr(regexp_replace(string(add_months(from_unixtime(unix_timestamp(),

'yyyy-mm-dd'),

-2))

,'-',''

),1,

6);-- --系統年月做運算, 得到string型別年月日

select substr(regexp_replace(string(add_months(from_unixtime(unix_timestamp(),

'yyyy-mm-dd'),

-2))

,'-',''

),1,

8);------用系統timestamp得到時間格式-年月

select from_unixtime(unix_timestamp(substr(regexp_replace(string(add_months(from_unixtime(unix_timestamp(),

'yyyy-mm-dd'),

-2))

,'-',''

),1,

6),'yyyymm'),

'yyyymm');

-- 把hive中的timestamp型別變數轉化為字串型別yyyymm變數

select substr(regexp_replace(string(execute_date)

,'-',''

),1,

6)from 使用者名稱.表名;

-- 把hive中的timestamp型別變數轉化為字串型別yyyymmdd變數

select substr(regexp_replace(string(execute_date)

,'-',''

),1,

6)from 使用者名稱.表名;

---- hive 中把timestamp轉化為date

select to_date(execute_date)

from 使用者名稱.表名;

------------

---- 獲取當前日期

select

current_date

;-----獲取當前時間的第二天

select date_add(

current_date,1

);-- 獲取下乙個月

select add_months(

current_date,1

);-- 根據系統日期按日運算yyyymmdd格式的string

select substr(regexp_replace(string(date_add(

current_date,1

)),'-',''

),1,

8);----

hive相關語法與操作

參考 hive操作參考 模板 create database if not exists dw fltdb use dw fltdb drop table if exists dw fltdb.factfltsegordersnap2015 08 create table if not exists...

hive裡面時間相關的函式的操作

show functions看一下,發現還蠻多的,需要注意天月時分秒之類的返回的都是數字,不會自動補0,可以使用lpad補全 year 獲取年 month 獲取月 weekofyear 獲取周 day 獲取日 hour 獲取小時 minute 獲取分鐘 second 獲取秒 datediff a,b...

hive中的時間操作

1.獲取系統當前時間戳 2.將時間戳轉換成時間,並且按照指定的格式進行格式化 3.將日期轉換成時間戳 4.日期時間轉日期函式 to date語法 to date string timestamp 5.獲取時間的年份部分 月份 天 小時 分鐘 select year 2011 12 08 10 03 ...