常见Oracle日期处理问题

  • 查询今天是星期几
 SELECT TO_CHAR(SYSDATE, 'D') INTO W_D FROM DUAL; --1表示星期天, 7表示星期六

 SELECT TO_CHAR(SYSDATE, 'DAY') INTO W_D FROM DUAL; 
  • 日期截取
SELECT 
SYSDATE, --2017/4/2 13:58:12
TRUNC(SYSDATE, 'yyyy'),--2017/1/1
TRUNC(SYSDATE, 'mm'),--2017/4/1
TRUNC(SYSDATE, 'dd'),--2017/4/2
TRUNC(SYSDATE),--2017/4/2
TRUNC(SYSDATE, 'hh24'),--2017/4/2 13:00:00
TRUNC(SYSDATE, 'mi')--2017/4/2 13:58:00
FROM DUAL;
  • 每个月的最后一天
SELECT LAST_DAY(SYSDATE) FROM DUAL;
  • 月天数查询
SELECT TO_CHAR(LAST_DAY(SYSDATE), 'DD') FROM DUAL;
  • 年天数查询
SELECT SUM(TO_CHAR(LAST_DAY(ADD_MONTHS(TRUNC(SYSDATE,'YYYY'), LEVEL - 1)) , 'DD'))
TOTAL_DAYS_OF_YEAR FROM DUAL CONNECT BY LEVEL <= 12;

SELECT LAST_DAY(ADD_MONTHS(TRUNC(SYSDATE, 'YYYY'), 11)) - TRUNC(SYSDATE, 'YYYY') + 1 TOTAL_DAYS_OF_YEAR FROM DUAL;
  • 得到一段时间内的所有周末日期
DROP TABLE WEEKEND;
CREATE TABLE WEEKEND
(WEEK_END DATE);
DECLARE
  W DATE := TO_DATE('2016-12-01','YYYY-MM-DD');
  W_D CHAR;
  BEGIN
    LOOP
      SELECT TO_CHAR(W, 'D') INTO W_D FROM DUAL;
      IF W_D = 1 OR W_D = 7 THEN
        INSERT INTO WEEKEND VALUES (W);
      END IF;
      W := W + 1;
      IF TO_CHAR(W,'YYYY-MM-DD') = '2016-12-30' THEN
        EXIT;
      END IF;
    END LOOP;
  END;
  /
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值