① 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替換為任意時間,以計算當天所在月份天數。