① oracle数据库中怎么查询当前年每月的天数,按自然月统计,谢谢!
楼上的只统计了一个月的吧
sql">WITHtAS
(SELECTROWNUM
FROMDUAL
CONNECTBYROWNUM<=12)
SELECTTO_CHAR(LAST_DAY(TO_DATE(TO_CHAR(SYSDATE,'YYYY')
||LPAD(TO_CHAR(ROWNUM),2,0),
'YYYYMM'
)
),
'YYYY-MM'
)
||'月',
TO_CHAR(LAST_DAY(TO_DATE(TO_CHAR(SYSDATE,'YYYY')
||LPAD(TO_CHAR(ROWNUM),2,0),
'YYYYMM'
)
),
'DD'
)
||'天'
FROMt
直接全选复制粘贴运行
② oracle 查询一段时间内每一天的统计数据sql怎么写
可以写一个简单的procere来实现,原理是遍历日期范围,并查询日期资料笔数,写入表。
数据源表test03
1 2016-06-01 1
2 2016-06-02 1
3 2016-06-05 1
4 2016-06-04 1
5 2016-06-04 1
procere代码如下:
create or replace procere loop_by_date(pbeg_tim in varchar2,--开始日期
pend_tim in varchar2,--结束日期
errmessage out varchar2) is
nCount number(10); --总天数
i_point number(10); --当天
is_zero number(10); --当天是否有记录
begin
nCount := 0;
i_point := 0;
is_zero := 0;
select ROUND(to_date(pend_tim, 'yyyy-mm-dd') -
to_date(pbeg_tim, 'yyyy-mm-dd'))
into nCount
from al;
delete from test02;
<<fst_loop>>
loop
select count(*)
into is_zero
from test03
where date1 =
to_char(to_date(pbeg_tim, 'yyyy-mm-dd') + i_point, 'yyyy-mm-dd');
insert into test02
(date01, nccount)
values
(to_char(to_date(pbeg_tim, 'yyyy-mm-dd') + i_point, 'yyyy-mm-dd'),
is_zero);
i_point := i_point + 1;
exit fst_loop when i_point >= nCount;
end loop fst_loop;
--end;
end loop_by_date;
传入参数"2016-06-01"~~"2016-06-10"并执行,结果写入test02为:
1 2016-06-01 1
2 2016-06-02 1
3 2016-06-03 0
4 2016-06-04 2
5 2016-06-05 1
6 2016-06-06 0
7 2016-06-07 0
8 2016-06-08 0
9 2016-06-09 0
③ sql语句:查询指定时间内,有记录的天数。(oracle)
--创建记录表
create table rec_ids as
select 1 id,to_date('2013-05-01 20:00:00','yyyy-mm-dd hh24:mi:ss') time from al union
select 1 id,to_date('2013-05-01 21:00:00','yyyy-mm-dd hh24:mi:ss') time from al union
select 1 id,to_date('2013-05-02 20:00:00','yyyy-mm-dd hh24:mi:ss') time from al union
select 1 id,to_date('液旦2013-05-03 20:00:00','yyyy-mm-dd hh24:mi:ss') time from al union
select 1 id,to_date('2013-05-03 21:00:00','yyyy-mm-dd hh24:mi:ss') time from al union
select 2 id,to_date('2013-05-01 20:00:00','yyyy-mm-dd hh24:mi:ss') time from al union
select 2 id,to_date('2013-05-01 21:00:00','yyyy-mm-dd hh24:mi:ss') time from al union
select 2 id,to_date('2013-05-02 20:00:00','yyyy-mm-dd hh24:mi:ss') time from al union
select 2 id,to_date('宽派2013-05-03 20:00:00','yyyy-mm-dd hh24:mi:ss') time from al union
select 2 id,to_date('2013-05-03 21:00:00','yyyy-mm-dd hh24:mi:ss') time from al;
--创建用户表
create table per as
select 1 id ,'张三' name from al union
select 2 id,'李四' name from al;
--查询用户记录慎埋贺数
select c.name,count(c.cc) from (select a.name, trunc(b.time) cc from per a
left join rec_ids b
on(a.id=b.id)
group by a.name,trunc(b.time)) c group by c.name;
④ SOS 如何在oracle 中计算两日期之间有多少天并且这两日期都是已经赋了日期的变量:
只要把两个日期相减就可以得游含滑到天数了,
如果后面有小数你就自己换算成小时分钟秒
比老谈如两个日期相减后是1.56
就相当于是神腊1天13小时26分24秒……自己算一下就行了
如果你只想以天数显示,那么在oracle中无须转换 默认就是
⑤ 在oracle数据库中,我有一张记录用户每次登录的记录表,怎么高效率计算用户连续登录的天数
用一个变竖培量存储最后登陆衡举时间,倒叙遍历所有登陆时间,
if(last_time-time=1){//时间间隔等于一天表示连续登陆
i++;
last_time=time;
}
if(last_time-time>1){//时间间隔大于一天非连续登陆退出循环
break;
}
if(last_time-time<1){//时间间隔小于1天表示一天多次登陆,忽略当前记咐纤碧录继续循环
continu;
}
随便写一个伪代码,你想用过程实现也成,或者用前台方法从结果集中获取数据也成;
⑥ oracle sql 语句 求当前时间15日内
sysdate当前时间,郑春
sysdate + 15 是 当前时间的15天虚丛升后
trunc(sysdate)+15 是当天的15天后差老
⑦ Oracle和SQL Server 用当前日期减去 '0001-01-01' 得出的天数不一致,相差2天,谁知道原因
假设表T,字段S_TIME是你需要的列:
(1) 若S_TIME为date类型,计算相差天数的SQL语句:SELECT TRUNC(SYSDATE)-TRUNC(S_TIME) FROM T WHERE 你需要的举租裂条件;
(2)若S_TIME为VARCHAR2类型型枯,计算相差天数的SQL语句正闭:SELECT TRUNC(SYSDATE)-TO_DATE(S_TIME,'YYYY-MM-DD') FROM T WHERE 你需要的条件;
⑧ 在oracle中如何用sql语句计算一段时间中的星期六和星期天的天数请大侠赐教!急求!!!!!!!!!!!
select count( case when to_char(dt,’day’)='星期六' or to_char(dt,’day')='星期日' then 1
else 0 end) as cnt
from
(
select d1+lv-1 dt
from
(
select level lv
from al
connect by level <= trunc(d2 -d1, 0)
) tt
) tm;
自己处理下临界值,这个是两边都取;如果是英文字符集,把星期改称英文,至于什么字符集,用这个判断
select to_char(sysdate, 'day') from al;
看结果是汉字还是英文。
⑨ oracle数据库sql语句怎样知道两个日期的天数
oracle 有datediff函数,提示出错肯定是你参数不对;
参考: datediff(''d'',adate,bdate) --如果adate字段 早于bdate字段,值为正,反之为负
⑩ ORACLE根据月份获取天数
select to_char(last_day(sysdate),'dd') from al
也可以碰圆搏将sysdate替换为任意时间,以计算当天所在月份天数。