在 oracle 如何计算 两个日期间的 秒数、分钟数、小时数、天数、周数、月数、年数

在 oracle 如何计算 两个日期间的 秒数、分钟数、小时数、天数、周数、月数、年数,第1张

时间,在数据库里实际是以长整型表示即1900-1-1日到当前的天数于是不难理解时间是可以做减法的
当然,为了简便,规定差值1为一天的,如果当前时间+365即明年的4月2日22:49:40秒
那么算下来,1秒即为:1/(243600)=000001157
至于分钟,小时,周数等等,都是些函数转换没啥希奇

先取分钟,然后取模5,判断是不是大于2,加上或舍去。
看下面例子:
select case
when mod(to_char(sysdate, 'mi'), 5) > 2 then
-- 取模大于2说明是要往上加的,凑成5的整数
5 - mod(to_char(sysdate, 'mi'), 5) + to_char(sysdate, 'mi')
else
-- 小于2说明是要舍去的
to_char(sysdate, 'mi') - mod(to_char(sysdate, 'mi'), 5)
end as M
from dual
另外,团IDC网上有许多产品团购,便宜有口碑

相差多少天:
相差几个星期
用to_char(sysdate,'ww')获取时间为当年的第多少个星期,同理做减法即可获得差值
两个时间之间的月份差总的来说,是用年份差乘以12,再加上月份差

select month_no,avg(value) vag_value,max(value) max_value,min(value) min_value from table_name where substr(month_no,1,4)='{year}' group by month_no
{year}是年参数,month_no是月份参数,varchar2型,如果是时间类型,比如load_timeselect to_char(load_time,'yyyymm') month_no,avg(value) vag_value,max(value) max_value,min(value) min_value from table_name where to_char(load_time,'yyyy') ='{year}' group by to_char(load_time,'yyyymm')

先取分钟,然后取模5,判断是不是大于2,加上或舍去。
看下面例子:
select
case
when
mod(to_char(sysdate,
'mi'),
5)
>
2
then
--
取模大于2说明是要往上加的,凑成5的整数
5
-
mod(to_char(sysdate,
'mi'),
5)
+
to_char(sysdate,
'mi')
else
--
小于2说明是要舍去的
to_char(sysdate,
'mi')
-
mod(to_char(sysdate,
'mi'),
5)
end
as
M
from
dual

select to_char(last_day(sysdate),'dd') from dual

也可以将sysdate替换为任意时间,以计算当天所在月份天数。

甲骨文公司简介:

oracle一般指甲骨文公司

甲骨文股份有限公司(Oracle)是全球大型数据库软件公司,总部位于美国加州红木城的红木岸。在2008年,甲骨文股份有限公司是继Microsoft及IBM后,全球收入第三多的软件公司。Oracle数据库产品为财富排行榜上的前1000家公司所采用,许多大型网站也选用了Oracle系统。甲骨文股份有限公司于1989年正式进入中国,在北京、上海、广州和成都均设立了分支机构。 2016年1月,甲骨文表示会收购网站数据追踪服务商AddThis。2016年2月,甲骨文收购了云计算创业公司Ravello Systems。2017年6月7日发布的2017年美国《财富》500强,甲骨文公司排名第81位。2017年6月,《2017年BrandZ最具价值全球品牌100强》公布,甲骨文公司排名第46位。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/13348386.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-19
下一篇 2023-07-19

发表评论

登录后才能评论

评论列表(0条)

保存