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;