【Oracle】按时间范围查询

 

-- 七天前的那一天
SELECT T.*
  FROM T_BREAKER T
 WHERE T.GATHERTIME BETWEEN
       TO_DATE(TO_CHAR(SYSDATE - 7, 'yyyy-mm-dd') || ' 00:00:00',
               'yyyy-mm-dd hh24:mi:ss') AND
       TO_DATE(TO_CHAR(SYSDATE - 7, 'yyyy-mm-dd') || ' 23:59:59',
               'yyyy-mm-dd hh24:mi:ss');

-- 上个星期一到上个星期天
SELECT T.*
  FROM T_BREAKER T
 WHERE TO_CHAR(T.GATHERTIME, 'YYYY-MM-DD') BETWEEN
       TO_CHAR((TRUNC(SYSDATE, 'DY') + 1 - 7), 'YYYY-MM-DD') AND
       TO_CHAR((TRUNC(SYSDATE, 'DY')), 'YYYY-MM-DD');

/* 前一个月内, 上个月1号到上个月最后一天 */
SELECT TO_CHAR(SYSDATE, 'MM') - 1 AS ONE_MONTH_AGO FROM DUAL;

SELECT T.*
  FROM T_BREAKER T
 WHERE TO_CHAR(T.GATHERTIME, 'MM') = TO_CHAR(SYSDATE, 'MM') - 1;

/* 前3个月内 */
SELECT TO_CHAR(SYSDATE, 'MM') - 3 AS ONE_MONTH_AGO FROM DUAL;

SELECT T.*
  FROM T_BREAKER T 
  WHERE TO_CHAR(T.GATHERTIME, 'MM') BETWEEN TO_CHAR(SYSDATE, 'MM') - 3
  AND TO_CHAR(SYSDATE, 'MM') - 1;
  

/* 前半年内 */
SELECT T.*
  FROM T_BREAKER T 
  WHERE TO_CHAR(T.GATHERTIME, 'MM') BETWEEN TO_CHAR(SYSDATE, 'MM') - 6
  AND TO_CHAR(SYSDATE, 'MM') - 1
  ORDER BY T.GATHERTIME ASC;

/* 上一年内,去年1月1日到去年12月31日 */
SELECT T.*
  FROM T_BREAKER T
 WHERE TO_CHAR(T.GATHERTIME, 'yyyy') = EXTRACT(YEAR FROM SYSDATE) - 1;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值