暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GaussDB获取日期及时间

一叶扁舟 2023-03-27
3476

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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论