網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
1.時(shí)間戳和日期相互轉(zhuǎn)換函數(shù)
具體執(zhí)行結(jié)果在后面?zhèn)渥?biāo)注出來(lái)。主要為時(shí)間戳轉(zhuǎn)換為日期函數(shù),和將日期轉(zhuǎn)換為時(shí)間戳函數(shù)
-- 1.時(shí)間戳轉(zhuǎn)化為日期函數(shù)
-- from_unixtime(bigint unixtime[, string format]) 其中第一個(gè)參數(shù)必須為bigint類型
select from_unixtime(1661084482) -- 2022-08-21 20:21:22
select from_unixtime(1661084482, 'yyyy-MM-dd') -- 2022-08-21
select from_unixtime(1661084482, 'yyyyMMdd') -- 20220821
select from_unixtime(1661084482,'yyyy-MM-dd HH:mm:ss') -- 2022-08-21 20:21:22
-- 2.將日期轉(zhuǎn)換為時(shí)間戳
select unix_timestamp('2022-08-21 20:21:22') -- 1661084482
select unix_timestamp('20220821','yyyyMMdd') -- 1661011200
select unix_timestamp('2022-08-21', 'yyyy-MM-dd') -- 1661011200
反回頂部
2.獲取當(dāng)前天的相關(guān)函數(shù)
獲取當(dāng)天時(shí)間的三種方式,注意格式,其中current_timestamp返回的時(shí)間為UTC時(shí)間。
-- 返回當(dāng)天三種方式,格式有一定的不同
select current_date -- 2023-06-14
select current_timestamp -- 返回時(shí)分秒 2023-06-14 07:56:14.28
select from_unixtime(unix_timestamp()) -- 2023-06-14 15:56:14
反回頂部
3.日期格式化函數(shù)
日期格式化函數(shù),需要什么格式,后面寫什么格式的日期字符串描述,to_date僅有一種格式返回結(jié)果
-- 需要什么格式,后面寫什么格式的日期字符串描述
select date_format('2022-08-21 20:21:22', 'yyyy-MM-dd') -- 2022-08-21
select date_format('2022-08-21 20:21:22', 'yyyyMMdd') -- 20220821
select date_format('2022-08-21', 'yyyy-MM-dd HH:mm:ss') -- 2022-08-21 00:00:00
-- 獲取時(shí)間日期的日期部分
select to_date('2022-08-21 20:21:22') -- 2022-08-21
反回頂部
4.獲取年、月、日、天、小時(shí)、分鐘、秒、周數(shù)、星期幾、季節(jié)函數(shù)
hive提供了靈活獲取年、月、日、天、小時(shí)、分鐘、秒、周數(shù)、星期幾、季節(jié)的函數(shù),最后面還提供了一個(gè)通過(guò)數(shù)學(xué)函數(shù)轉(zhuǎn)換獲取季度的邏輯,可以看出其實(shí)部分函數(shù)如果版本不支持,我們可以通過(guò)其他方式曲線獲取。當(dāng)然,不提倡,可讀性差。
-- 獲取年
select year('2022-08-21 20:21:22') -- 2022
-- 獲取月
select month('2022-08-21 20:21:22') -- 8
-- 獲取當(dāng)前天
select day('2022-08-21 20:21:22') -- 21
-- 每月第幾天,同day()
select dayofmonth('2022-08-21 20:21:22') -- 21
-- 獲取當(dāng)前小時(shí)
select hour('2022-08-21 20:21:22') -- 20
-- 獲取當(dāng)前分鐘
select minute('2022-08-21 20:21:22') -- 21
-- 獲取當(dāng)前秒
select second('2022-08-21 20:21:22') -- 22
-- 活躍當(dāng)前日期是本年第幾周
select weekofyear('2022-08-21 20:21:22') -- 31
-- 獲取當(dāng)前天是本周第幾天,計(jì)算日歷是從星期天為本周第一天開始計(jì)算。如果想要計(jì)算星期1為第一天,可以在當(dāng)前天加1天再去計(jì)算。
select dayofweek('2022-08-21 20:21:22') -- 1
-- 獲取當(dāng)前日期是第幾季度
select quarter('2022-08-21 20:21:22') -- 3
-- 如果有hive因版本不支持部分函數(shù),可以通過(guò)數(shù)學(xué)轉(zhuǎn)換計(jì)算,例如當(dāng)前是第幾季度。
select ceil(month('2022-08-21 20:21:22')/3) -- 季節(jié) 3 數(shù)學(xué)轉(zhuǎn)換
反回頂部
5.日期和月份的加減相關(guān)函數(shù)
獲取日期和月份的加減操作,靈活處理日期和月份增加減少,日期月份之間互相求差值。
-- 日期增加日
select date_add('2022-08-21',10) -- 增加日 2022-08-31
-- 日期減少日
select date_sub('2022-08-21',10) -- 減少日 2022-08-11
-- 月增加
select add_months('2022-08-21',2) -- 增加月 2022-10-21
-- 月減少
select add_months('2022-08-21',-1) -- 減少月 2022-07-21
-- 兩個(gè)日期相減函數(shù)
select datediff('2022-08-23', '2022-08-21') -- 2
-- 兩個(gè)月份相減
select months_between('2022-08-21', '2022-07-25') -- 0.871
反回頂部
6.獲取一些指定特殊日期的函數(shù)
主要是獲取指定日期的月初(月末)、年初(年末)日期和獲取指定日期的下個(gè)星期幾的日期
-- 獲取指定日期的月初(月末)、年初(年末)日期
select last_day('2023-06-13') -- 月末 2023-06-30
select trunc('2023-06-13', 'MM') -- 月初 2023-06-01
select trunc('2023-06-13', 'YY') -- 年初 2023-01-01
select date_sub(add_months(trunc('2023-06-13', 'YY'),12),1) -- 年末 2023-12-31
-- 獲取指定日期的下個(gè)星期幾的日期
select next_day('2023-06-13', 'MO') -- 2023-06-19
select next_day('2023-06-13', 'TU') -- 2023-06-20
select next_day('2023-06-13', 'WE') -- 2023-06-14
select next_day('2023-06-13', 'TH') -- 2023-06-15
select next_day('2023-06-13', 'FR') -- 2023-06-16
select next_day('2023-06-13', 'SA') -- 2023-06-17
select next_day('2023-06-13', 'SU') -- 2023-06-18
反回頂部
7.時(shí)區(qū)轉(zhuǎn)換函數(shù)操作
時(shí)區(qū)轉(zhuǎn)換函數(shù)有很多需要注意的點(diǎn),其也可以聯(lián)合使用,簡(jiǎn)單說(shuō)一下時(shí)區(qū),UTC是世界標(biāo)準(zhǔn)時(shí)間。
東一區(qū) GMT+1,東八區(qū)GMT+8以此類推,西一區(qū)GMT-1,西七區(qū)GMT-7以此類推。
時(shí)間戳沒(méi)有時(shí)區(qū)屬性,同一時(shí)刻時(shí)間戳一致。
-- 將utc時(shí)間轉(zhuǎn)換為東八區(qū)時(shí)間。輸入為utc時(shí)間字符串,結(jié)果為東八區(qū)時(shí)間字符串
select from_utc_timestamp('2023-06-14 15:56:14','GMT+8') -- 2023-06-14 23:56:14
-- 將utc時(shí)間戳轉(zhuǎn)換為東八區(qū)時(shí)間,輸入為utc時(shí)間戳,結(jié)果為東八區(qū)時(shí)間字符串,時(shí)間戳沒(méi)有時(shí)區(qū)屬性,同一時(shí)刻時(shí)間戳一致
select from_utc_timestamp(cast(1686729374000 as bigint),'GMT+8') -- 2023-06-14 15:56:14
-- 將指定時(shí)區(qū)時(shí)間轉(zhuǎn)換成utc時(shí)間
select to_utc_timestamp('2023-06-14 15:56:14','GMT+8') -- 2023-06-14 07:56:14
-- 將指定時(shí)區(qū)時(shí)間的時(shí)間戳轉(zhuǎn)換成utc時(shí)間(這種使用方式不常見,是錯(cuò)誤的,只是在某些時(shí)刻進(jìn)行數(shù)據(jù)轉(zhuǎn)換用,不建議使用)
select to_utc_timestamp(cast(1686729374000 as bigint),'GMT+8') -- 2023-06-13 23:56:14
-- 正確的轉(zhuǎn)換時(shí)間戳為utc時(shí)間的方式
select to_utc_timestamp(cast(1686729374000 as bigint),'UTC')
以上內(nèi)容為日期時(shí)間函數(shù)的常見使用方法及注意事項(xiàng),有需要可以收藏。
一些函數(shù)可以搭配使用,滿足生產(chǎn)環(huán)境中的時(shí)間需求。
原文鏈接:https://blog.csdn.net/2301_78834737/article/details/131558949
- 上一篇:沒(méi)有了
- 下一篇:沒(méi)有了
相關(guān)推薦
- 2022-05-11 linq中的分組操作符_實(shí)用技巧
- 2022-03-28 Python實(shí)現(xiàn)網(wǎng)頁(yè)文件轉(zhuǎn)PDF文件和PNG圖片的示例代碼_python
- 2022-06-25 C#實(shí)現(xiàn)連接電子秤串口自動(dòng)稱重_C#教程
- 2022-07-07 淺談Qt實(shí)現(xiàn)HTTP的Get/Post請(qǐng)求_C 語(yǔ)言
- 2022-03-23 C語(yǔ)言實(shí)現(xiàn)打印楊輝三角的方法詳細(xì)(三種方法)_C 語(yǔ)言
- 2022-09-23 Pandas中Apply函數(shù)加速百倍的技巧分享_python
- 2022-08-14 Android?MonoRepo多倉(cāng)和單倉(cāng)的差別理論_Android
- 2023-07-07 什么是 AOP?對(duì)于 Spring IoC 和 AOP 的理解?
- 欄目分類
-
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支