資料庫 HIVE SQL如何返回周or週幾

2021-09-21 01:42:22 字數 906 閱讀 9042

在工作中,經常會遇到在統計歷史資料時,需要按周或者按月來展示,或者今年按照同比去年的同月、同周的資料,但是在hive中沒有直接返回週幾的函式,只有返回是一年當中的第幾周,那麼返回周的函式是什麼?又如何返回一周中的周幾呢?

即可以是時分秒也可以直接是日期

select weekofyear('2011-12-08 10:03:01') as week

select weekofyear('2011-12-08') as week

week

49有兩種方法,一種是用取餘函式,另一種是用時間差函式

2.1 pmod 是正取餘函式:

語法: pmod(int a, int b),pmod(double a, double b)

返回值: int double

說明: 返回正的a除以b的餘數

select pmod(datediff('2019-04-01','1920-01-01')-3,7) as week
這裡一周是從0~6,那麼如果想裝換為1~7則可以用第二種方法

說明:返回值為「0-6」(「0-6」分別表示「星期日-星期六」);

返回值為「1-7」(「1-7」分別表示「星期一-星期日」)

2.2 datediff 是兩個日期相減的函式

語法:datediff(string enddate, string startdate)

返回值: int 

說明: 返回兩個時間引數的相差天數。

select if(pmod(datediff('2019-04-01','1920-01-01')-3,7)='0',7,pmod(datediff('2019-04-01','1920-01-01')-3,7)) as week

Hive SQL 之 資料庫

1 hive 中的資料庫本質是乙個目錄,通常資料庫儲存在hive.metastore.warehouse.dir所指定的目錄下,以.db為字尾,例如testdb.db,該資料庫中的表以這個資料庫目錄的子目錄存在。注 default這個資料庫是hive預設的資料庫,若不指定資料庫,這預設使用該資料庫。...

資料庫 HIVE SQL索引及其使用

最近在用一張8億資料量表作為主表去關聯乙個千萬量級的表時遇到乙個問題,job執行的特別慢,而且大量的時間花費在了大表的查詢上。如何解決這個問題,首先想到是不是由於資料偏移造成的,對應了各種資料偏移的場景,最後認定不是資料偏移造成的。那怎麼辦呢?後來想到用索引!由於對於索引不是特別了解,查了各種資料,...

資料庫 HIVE SQL 增刪改查方法

目錄 1 展示乙個表的分割槽 2 檢視乙個job的原 3 修改乙個表中某個欄位的描述 4 刪除分割槽 5 修改表名 6 新增一列 7 修改列的屬性 8 新增分割槽 9 刪除表 10 根據乙個已存在的表,新建乙個結構一樣的表 show partitions dw htlbizdb.userlibrar...