我們平時(shí)按天或者按星期統(tǒng)計(jì)數(shù)據(jù)得時(shí)候,經(jīng)常需要將日期轉(zhuǎn)換成星期幾統(tǒng)計(jì),下面分享一個(gè)利用Hive已有得函數(shù)計(jì)算星級(jí)幾得方法。
方法一:datediff函數(shù)和pmod函數(shù)計(jì)算星期datediff(endDate, startDate)函數(shù):計(jì)算兩個(gè)日期得差。pmod(int a, int b)函數(shù):返回a除b得余數(shù)得可能嗎?值。cast(字段名 as 轉(zhuǎn)換得類型):類型轉(zhuǎn)換函數(shù)。一周是7天,然后選擇參照日期對(duì)7取余即可,按周日是一周開始得第壹天計(jì)算,注意參照日期得選擇。
-- 2021-12-12 周日SELECt date, cast(pmod(datediff(date, '2021-12-12'), 7) as int) dayofweek FROM ( SELECt '2021-12-12' AS date UNIOn ALL SELECT '2021-12-13' AS date UNIOn ALL SELECT '2021-12-14' AS date UNIOn ALL SELECT '2021-12-15' AS date UNIOn ALL SELECT '2021-12-16' AS date UNIOn ALL SELECT '2021-12-17' AS date UNIOn ALL SELECT '2021-12-18' AS date UNIOn ALL SELECT '2021-12-19' AS date UNIOn ALL SELECT '2021-12-20' AS date ) t
日期轉(zhuǎn)換星期結(jié)果
方法二:date_format函數(shù)SELECT date , CASE WHEN dayofweek = 7 THEN 0 ELSE dayofweek END AS dayofweekFROM ( SELECT '2021-12-12' AS date, CAST(date_format('2021-12-12', 'u') AS int) AS dayofweek UNIOn ALL SELECT '2021-12-13' AS date, CAST(date_format('2021-12-13', 'u') AS int) AS dayofweek UNIOn ALL SELECT '2021-12-14' AS date, CAST(date_format('2021-12-14', 'u') AS int) AS dayofweek UNIOn ALL SELECT '2021-12-15' AS date, CAST(date_format('2021-12-15', 'u') AS int) AS dayofweek UNIOn ALL SELECT '2021-12-16' AS date, CAST(date_format('2021-12-16', 'u') AS int) AS dayofweek UNIOn ALL SELECT '2021-12-17' AS date, CAST(date_format('2021-12-17', 'u') AS int) AS dayofweek UNIOn ALL SELECT '2021-12-18' AS date, CAST(date_format('2021-12-18', 'u') AS int) AS dayofweek UNIOn ALL SELECT '2021-12-19' AS date, CAST(date_format('2021-12-19', 'u') AS int) AS dayofweek UNIOn ALL SELECT '2021-12-20' AS date, CAST(date_format('2021-12-20', 'u') AS int) AS dayofweek) t
date_format轉(zhuǎn)換星期
補(bǔ)充說(shuō)明date_format函數(shù)如果第壹個(gè)參數(shù)是字符串,連接符只能是“-”,不能是斜線或者其他得。
select date_format('2021-12-12', 'y');-- 2021select date_format('2021-12-12', 'yyyy');-- 2021select date_format('2021-12-12', 'yyyy-MM');-- 2021-12select date_format('2021-12-12 12:10:01', 'yyyy-MM');-- 2021-12select date_format('2021/12/12', 'y');-- NULL
覺(jué)得有用就分享收藏,感謝對(duì)創(chuàng)作者的支持我更多有價(jià)值得文章會(huì)第壹時(shí)間推薦給你![玫瑰][玫瑰][玫瑰]