Oracle時間統計

select count(*) from Member_user where to_char(CREATEDATE,'yyyy-mm-dd')=to_char(sysdate,'yyyy-mm-dd'); --今天 
select count(*) from Member_user where to_char(CREATEDATE,'dd')=to_char(sysdate,'dd'); --當天,全部月份的這個號
select count(*) from Member_user where to_char(CREATEDATE,'mm-dd')=to_char(sysdate,'mm-dd'); 
select count(*) from Member_user where to_char(CREATEDATE,'mm.dd')=to_char(sysdate,'mm.dd'); --當月當天,全部年的這一天
select count(*) from Member_user where to_char(CREATEDATE,'yyyy-iw')=to_char(sysdate,'yyyy-iw');  --本週 
select count(*) from Member_user where to_char(CREATEDATE,'iw')=to_char(sysdate,'iw');  --當週,全部年的這一天
select count(*) from Member_user where to_char(CREATEDATE,'yyyy-mm')=to_char(sysdate,'yyyy-mm'); --本月
select count(*) from Member_user where to_char(CREATEDATE,'mm')=to_char(sysdate,'mm'); --當月
select count(*) from Member_user where to_char(CREATEDATE,'yyyy-q')=to_char(sysdate,'yyyy-q'); --本季度 
select count(*) from Member_user where to_char(CREATEDATE,'q')=to_char(sysdate,'q'); --當季度
SELECT NEXT_DAY (SYSDATE,1) FROM dual; --下個星期日
SELECT NEXT_DAY (SYSDATE,2) FROM dual; --下個星期一
SELECT NEXT_DAY (SYSDATE,7) FROM dual; --下個星期六
SELECT NEXT_DAY (SYSDATE,8) FROM dual; --ORA-01846: 週中的日無效 not a valid day of the week

SELECT NEXT_DAY (SYSDATE,'星期一') FROM dual; --下個星期一
SELECT NEXT_DAY (SYSDATE,'Monday') FROM dual; --ORA-01846: 週中的日無效 not a valid day of the week
--2017-11-17
SELECT TO_CHAR(SYSDATE,'YYYY') FROM dual; -- 2017
SELECT TO_CHAR(SYSDATE,'YYY') FROM dual;  --017
SELECT TO_CHAR(SYSDATE,'YY') FROM dual;  --17
SELECT TO_CHAR(SYSDATE,'Y') FROM dual;  --7
SELECT TO_CHAR(SYSDATE,'MM') FROM dual;  --11
SELECT TO_CHAR(SYSDATE,'M') FROM dual;  --ORA-01821: 日期格式沒法識別 date format not recognized
SELECT TO_CHAR(SYSDATE,'RM') FROM dual;  --2017-11-17,XI,即11;2018-04-11,IV,即4。
--羅馬數字的符號一共只有7個:I(表明1)、V(表明5)、X(表明10)、L(表明50)、C表明100)、D(表明500)、M(表明1,000)。
SELECT to_char(sysdate,'dd') FROM dual;  -- 2017/11/20  20
SELECT to_char(sysdate,'d') FROM dual;  --星期日~星期六 1~7
SELECT TO_CHAR(SYSDATE,'Q') FROM dual;  -- 第幾季度

select last_day(sysdate) from dual;   --該月最後一天
select months_between(to_date('2018.04.11','yyyy.mm.dd'),to_date('2017.11.20','yyyy.mm.dd')) mon_betw from dual; --4.70967741935483870967741935483870967742
Select to_char(Sysdate, 'YYYY-MM-DD')   From Dual;
Select to_char(Sysdate, 'hh24:mi:ss')   From Dual;
select to_char(trunc(sysdate),'YYYY-MM-DD hh24:mi:ss') from dual; --默認截取到日(當日的零點零分零秒)
select to_char(trunc(sysdate,'dd'),'yyyymmdd hh24:mi:ss') from dual; --截取到日(當日的零點零分零秒)

select trunc(sysdate) from dual; --默認截取到日(當日的零點零分零秒)
Select trunc(Sysdate, 'YYYY-MM-DD')   From Dual;  -- ORA-01898: 精度說明符過多 too many precision specifiers

Select trunc(Sysdate, 'MM')   From Dual;  -- 2017-11-21  結果: 2017-11-01
Select trunc(Sysdate, 'month')   From Dual;  -- 2017-11-21  結果: 2017-11-01
Select trunc(Sysdate, 'YYYY')   From Dual;  -- 2017-11-21  結果: 2017-01-01
select trunc(sysdate, 'year') from dual; -- 2017-11-21  結果: 2017-01-01
Select trunc(Sysdate, 'DD')   From Dual;  -- 2017-11-21  結果: 2017-11-21
select trunc(sysdate,'q') from dual; --截取到季度(本季度的第一天)

select trunc(sysdate,'hh24') from dual;  --截取到小時(當前小時,零分零秒)
select trunc(sysdate,'mi') from dual; --截取到分(當前分,零秒)
select trunc(sysdate,'ss') from dual ;--ORA-01899: 精度說明符錯誤 bad precision specifier
select trunc(sysdate,'ww') from dual;  --本週第2天,即本週一
select trunc(sysdate,'iw') from dual;  --本週第2天,即本週一
select trunc(sysdate,'w') from dual;  --本週第1天,即上週日
select trunc(sysdate-4,'w') from dual;  --(sysdate-n)那一週第1天
select trunc(sysdate,'day') from dual; --本週第1天,即上週日
select  sysdate - interval '7' day  from dual; --當前時間減去7天的時間
select to_date(to_char(sysdate-7,'yyyy/mm/dd'),'yyyy/mm/dd') from dual; 
select to_date(to_char(sysdate-7,'yyyy-mm-dd'),'yyyy-mm-dd') from dual;
--近一個月 天天登錄用戶數目  
select login_type, to_char(logindate,'yyyy-mm-dd'), count(*) from member_user_login_trace 
where logindate > add_months(sysdate, -1)
group by login_type, to_char(logindate,'yyyy-mm-dd');
--這個月的每一天
SELECT TRUNC(SYSDATE, 'MM') + ROWNUM - 1 FROM DUAL CONNECT BY ROWNUM <= TO_NUMBER(TO_CHAR(LAST_DAY(SYSDATE), 'dd'));
--今天之後的30天 包括今天
SELECT SYSDATE + ROWNUM - 1 FROM DUAL CONNECT BY ROWNUM <= TO_NUMBER(TO_CHAR(LAST_DAY(SYSDATE), 'dd'));
SELECT SYSDATE + ROWNUM - 1 FROM DUAL CONNECT BY ROWNUM <= 30;
--2018-04-11 之後的30天 包括今天
with t as
(select rownum-1 rn from dual connect by rownum<=30)
select to_date('2018-04-11','yyyy-mm-dd')+rn from t ;
-- 2015-01-01 到 2015-01-15的每一天
with t as
(select rownum-1 rn from dual connect by rownum<=100)
select to_date('2015-01-01','yyyy-mm-dd')+rn from t 
where to_char(to_date('2015-01-01','yyyy-mm-dd')+rn,'yyyy-mm-dd') between '2015-01-01' and '2015-01-15' ;
select TO_NUMBER(TO_CHAR(LAST_DAY(SYSDATE), 'dd')) FROM DUAL;  --30
select ROWNUM FROM DUAL;  --1
select rownum-1 rn from dual connect by rownum<=30;   -- 0~29
select * from v$version;
相關文章
相關標籤/搜索