1.当前时间往前推15分钟
mod(x,y)
----描述:
----x/y的余数(模)
----如果x是0,则返回y。
----返回值类型:与参数类型相同。
----mi:代表分钟数
select date_trunc(‘hour’,sysdate) + case when mod(to_number(to_char(sysdate,‘mi’)),5) <> 0 then to_number(to_char(sysdate,‘mi’))
- mod(to_number(to_char(sysdate,‘mi’)),5) else to_number(to_char(sysdate,‘mi’)) -mod(to_number(to_char(sysdate,‘mi’)),5) end /(60 * 24 ) -15/24/60 as data_date from dual;
1
2
2.取当前月份往前推12个月,每个月第一天
取当前月份往前推12个月,每个月第一天:
from generate_series(
--开始日期 date_trunc('month', now())::date 是当前月份第一天
date_trunc('month',sysdate)::date,
--结束日期 '-1y +1mon' 代表往前推一年,然后再往后加一个月
date_trunc('month', sysdate)::date+ '-1y +1mon'::interval,
-- step 位移步调 -1 months 代表往后倒推一个月
'-1 months'::interval
) mon
;
3.取当前月份往前推12个月,每个月最后一天
取当前月份往前推12个月,每个月最后一天:
--开始日期 date_trunc('month', now())::date 是当前月份第一天
from generate_series(date_trunc('month',sysdate)::date,
--结束日期 '-1y +1mon' 代表往前推一年,然后再往后加一个月
date_trunc('month', sysdate)::date+ '-1y +1mon'::interval,
-- step 位移步调 -1 months 代表往后倒推一个月
'-1 months'::interval
) mon
;
该处主要使用generate_series函数,生成连续日期,再进行查询
函数 参数类型 返回类型 描述
generate_series(start,stop,step) int或bigint setof int或setof bigint(与参数类型相同)) 生成一个数值序列,从start到stop,步长为step。
generate_series(start,stop,step) timestamp或timestamp with time zone setof timestamp或setof timestamp with time zone(与参数类型相同) 生成一个数值序列,从start到stop,步长为step。
理解generate_series这个函数,会解决很多小问题。
4.查询数据
利用该函数查询数据:
phone,
generate_series(trunc(sysdate -1)::TIMESTAMP,to_char(trunc(sysdate -1),'yyyy-mm-dd')|| ' 23:55:00','5 min')
from
test_cache;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




