1、计算某两个月(某两个时间点)相隔多少个月(/天)
MONTHS_BETWEEN(,)函数:
SELECT MONTHS_BETWEEN(TO_DATE('201208','YYYYMM'),TO_DATE('201203','YYYYMM')) FROM DUAL ; --结果为:5
若想得到两个时间点相隔多少天,可在ORACLE中直接相减
SELECT TO_DATE('201208','YYYYMM') - TO_DATE('201203','YYYYMM') FROM DUAL ; --结果为:153
2、取某个月的最后一天
SELECT LAST_DAY(TO_DATE('201412','YYYYMM')) FROM DUAL ;
3、
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD:HH24:mi:ss') FROM DUAL;
-- 2015-04-29:18:07:30
4、Trunc()函数
1) 日期:TRUNC(date,[fmt])
其中:
trunc(sysdate,'yyyy') --返回当年第一天.
trunc(sysdate,'mm') --返回当月第一天.
trunc(sysdate,'d') --返回当前星期的第一天.
2)数字
5、NEXT_DAY(,)函数
6、关于Oracle to_char()函数中的IW,WW 周别显示
1)ww的算法为每年1月1日为第一周开始,date+6为每一周结尾
例如20050101为第一周的第一天,而第一周的最后一天为20050101+6=20050107
公式 每周第一天 :date + 周 * 7 - 7
每周最后一天:date + 周 * 7 - 1
2)iw的算法为星期一至星期日算一周,且每年的第一个星期一为第一周,
例如20050101为星期六,所以用iw的算法是前年的53周,而20050103之后才是第一周的开始。
公式 每周第一天 :next_day(date) + 周 * 7 - 7
每周最后一天:next_day(date) + 周 * 7 - 1
3)其它:
A、查今天是 "本月" 的第几周
SELECT TO_CHAR(SYSDATE,'WW') - TO_CHAR(TRUNC(SYSDATE,'MM'),'WW') + 1 AS "weekOfMon" from dual;
或
SELECT TO_CHAR(SYSDATE,'W') AS "weekOfMon" from dual;
B、查今天是 "今年" 的第几周
select to_char(sysdate,'ww') from dual;
或
select to_char(sysdate,'iw') from dual;
------小技巧
--每周一跑数据,其它时候空跑
IF TO_CHAR(SYSDATE,'d') = 2
THEN