TRUNC函数
select trunc(current_date(),'MM');
select trunc(current_date(),'YY');
INTERVAL函数
select current_date() - interval 1 day;
select current_date() - interval 1 month;
select current_date() - interval 1 year;
还可以按照年月,月日,日时,时分,分秒的格式来间隔
select current_date() - INTERVAL '1 1' year_month;
求上个月第一天
select trunc(add_months(current_date(),-1),'MM');
动态时间序列
SELECT
date_add(start_date, indexs) trade_date,1 flag
FROM (SELECT '2022-08-01' AS start_date, '2022-10-11' AS end_date)
dt lateral VIEW posexplode(split(space(DATEDIFF(end_date, start_date)), '')) dt_sp AS indexs,val;
本周第一天
select DATE_ADD(NEXT_DAY('2022-10-11','MO'),-7);
当前星期几
select pmod(datediff(CURRENT_DATE(),"1920-01-01") - 3,7);
千分位展示
select format_number(898765.099,2);
当前时间上个季度第一天
SELECT date_format(add_months(concat(year(date_sub(current_date(),1)),'-',substr(concat('0',floor((month(date_sub(current_date(),1))+2)/3)*3+1),-2),'-01'),-6),'yyyy-MM-dd') start_date;
当前时间上个季度最后一天
SELECT date_format(add_months(last_day(concat(year(date_sub(current_date(),1)),'-',quarter(date_sub(current_date(),1))* 3,'-01')),-3),'yyyy-MM-dd') end_date;
当前时间本季度第一天和最后一天
SELECT date_format(add_months(concat(year(date_sub(current_date(),1)),'-',substr(concat('0',floor((month(date_sub(current_date(),1))+2)/3)*3+1),-2),'-01'),-3),'yyyy-MM-dd') start_date;
SELECT date_format(last_day(concat(year(date_sub(current_date(),1)),'-',quarter(date_sub(current_date(),1))* 3,'-01')),'yyyy-MM-dd') end_date;