一、時間函數的使用
1.from_unixtime(bigint unixtime[, string format]):將是將戳轉化為日期
(1)時間戳為13位的情況:
案例:時間戳為13位的情況

2.unix_timestamp獲取當前UNIX時間戳函數:(將日期轉化為時間戳)
(1) unix_timestamp()
(2) unix_timestamp(string date)
(3)unix_timestamp(string date, string pattern)
(4)案例如下(yy-MM-dd和yyMMdd兩種時間格式):最好使用unix_timestamp(string date, string pattern)轉化,表明時間格式
a.yyMMdd

b.yyyy-MM-dd

3. 獲取年、月、日、天、小時、分鍾、秒、周數、星期幾、季節函數
select created_at,year(created_at), --年
month(created_at),--月
day(created_at),--日
hour(created_at),--小時
minute(created_at),--分鍾
second(created_at),--秒
weekofyear(created_at),--第幾周
dayofweek(created_at),--星期幾
ceil(month(created_at)/3)--季節
from trial_sdk.device
where to_date(created_at)='2019-08-27'
4. 日期計算函數
日期(月份)增減函數
(1) 日期往后推幾天,使用date_add函數,日期往前推幾天,使用date_sub函數;
select created_at,date_add(created_at,10) daslater,date_sub(created_at,10) daysoff
from trial_sdk.device
where to_date(created_at)='2019-08-27'
(2)月份往后推幾個月,使用add_months函數,參數為正數;月份往前推幾個月,參數為負數
select created_at,add_months(created_at,3) monthslater,
add_months(created_at,-3) monthsoff
from trial_sdk.device
where to_date(created_at)='2019-08-27'
5. 兩個日期(月份)相減函數
(1)日期相減使用date_diff函數,返回相差天數;月份相減使用months_between,返回相差月份,不足月為小數
select datediff('2019-08-23', '2019-08-21'),
months_between('2019-08-21', '2019-07-25')
結果:2 0.87096774
(2)若計算兩個之間相差的小時數,可以使用:
select hour('2019-08-23 10:11:12')-hour('2019-08-21 12:20:20')
+(datediff('2019-08-23 10:11:12','2019-08-21 12:20:20'))*24
結果:46
6. 獲取月初(月末)、年初(年末)日期
- 獲取月末日期使用last_day函數,
- 獲取月初日期使用trunc(,'MM')函數;
- 獲取年初日期使用trunc(,‘YY’)函數,使用date_sub(add_months(trunc('',
select last_day(created_at), --月末
trunc(created_at, 'MM'), --月初
trunc(created_at, 'YY'), --年初
date_sub(add_months(trunc(created_at, 'YY'),12),1) --年末
from trial_sdk.device
where to_date(created_at)='2019-08-27'
7. 獲取日期的下個星期幾的日期
使用函數next_day獲取日期下個星期幾的日期,
參數: 周一:MO;周二:TU;周三:WE ;周四:TH ;周五:FR ;周六:SA;周日SU
select next_day(created_at, 'MO'),---下個星期一的日期:9.2
next_day(created_at, 'TU'),---下個星期二的日期:9.3
next_day(created_at, 'WE'),---下個星期三的日期
next_day(created_at, 'TH'),---下個星期四的日期
next_day(created_at, 'FR'),---下個星期五的日期
next_day(created_at, 'SA'),---下個星期六的日期
next_day(created_at, 'SU') ---下個星期日的日期
from trial_sdk.device
where to_date(created_at)='2019-08-27'
二、時間格式的轉換