Oracle数据库统计日期

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle数据库统计日期相关的知识,希望对你有一定的参考价值。

注册客户数(统计个人客户表中,归属该机构且注册日期从当年1月1日至查询日期的不同用户ID数);
SQL应该怎么写?

参考技术A select count(distinct 用户id) --客户数
from 个人客户表
where 归属机构= ‘’
and 注册日期 >= trunc(sysdate,'y')
and 注册日期 >= sysdate
你说的不同用户id数,我没太理解,不知道这个sql是否满足你的要求追问

当年的1月1号。比如系统当前时间是20190909,那么我怎么得到20190101。

追答

trunc(sysdate,'y')取的就是当前时间的年度第一天

参考技术B select count(*) from 客户表
where 机构名='写名字' 
and 注册日期 BETWEEN TO_DATE('2018-08-01','YYYY-MM-DD') AND TO_DATE('2018-08-02','YYYY-MM-DD')

追问

当年的1月1号。比如系统当前时间是20190909,那么我怎么得到20190101。

oracle根据出生日期算年龄

oracle根据出生日期算年龄,凡是在10月31号之前出生的时候,比如2010年统计的时候,有个孩子是09年8月1号出生,2010年统计的时候,算2岁,如果他在09年11月1号出生的时候,2010年统计的时候,他就算1岁
凡是在10月31号之前出生的时候,比如2010年统计的时候,有个孩子是09年8月1号出生,2010年统计的时候,算1岁,如果他在09年11月1号出生的时候,2010年统计的时候,他就算0岁,意思是按10月份区分

select floor(months_between(to_date(concat(extract(year from sysdate),'-10-31'),'YYYY-MM-DD'),to_date(生日的日期,'yyyy-mm-dd'))/12) from table_name

floor 向下取整
months_between 日期相差的月份数
concat字字符串连接
extract(year from sysdate) 返回当前日期的年份
参考技术A SELECT months_between(SYSDATE,to_date(生日的列名,'yyyy-mm-dd'))/12 FROM 表名;

以上是关于Oracle数据库统计日期的主要内容,如果未能解决你的问题,请参考以下文章

oracle根据出生日期算年龄

Oracle按日期统计

oracle周数计算

oracle中怎么按每小时分组。数据如下:

oracle 查询一段时间内每一天的统计数据sql怎么写

Oracle数据库按时间进行分组统计数据的方法