Oracle查询今天、昨天、本周、上周、本月、上月数据方式

Oracle查询今天、昨天、本周、上周、本月、上月数据 查询今天数据: SELECT COUNT(1) FROM T_CALL_RECORDS WHERE TO

Oracle查询今天、昨天、本周、上周、本月、上月数据

查询今天数据:

SELECT COUNT(1) FROM T_CALL_RECORDS WHERE TO_CHAR(T_RKSJ,'YYYY-MM-DD')=TO_CHAR(SYSDATE,'YYYY-MM-DD')

查询昨天数据:

SELECT COUNT(1) FROM T_CALL_RECORDS WHERE TO_CHAR(T_RKSJ,'YYYY-MM-DD')=TO_CHAR(SYSDATE-1,'YYYY-MM-DD') 

查询本周数据:

SELECT COUNT(1) FROM T_CALL_RECORDS WHERE T_RKSJ >= TRUNC(NEXT_DAY(SYSDATE-8,1)+1) AND T_RKSJ < TRUNC(NEXT_DAY(SYSDATE-8,1)+7)+1

查询上周数据:

SELECT COUNT(1) FROM T_CALL_RECORDS WHERE T_RKSJ >= TRUNC(NEXT_DAY(SYSDATE-8,1)-6) AND T_RKSJ < TRUNC(NEXT_DAY(SYSDATE-8,1)+1)

查询本月数据:

SELECT COUNT(1) FROM T_CALL_RECORDS WHERE TO_CHAR(T_RKSJ,'YYYY-MM')=TO_CHAR(SYSDATE,'YYYY-MM')

查询上月数据:

SELECT COUNT(1) FROM T_CALL_RECORDS WHERE TO_CHAR(T_RKSJ,'YYYY-MM')=TO_CHAR(ADD_MONTHS(SYSDATE,-1),'YYYY-MM')

查询表名及字段信息数据:

SELECT A.TABLE_NAME 表名,A.COLUMN_NAME 字段名,A.COMMENTS 字段注释,B.DATA_TYPE 字段类型,B.DATA_LENGTH 字段长度,B.NULLABLE 是否为空,C.INDEX_NAME 索引名称
FROM USER_COL_COMMENTS A 
LEFT JOIN USER_TAB_COLUMNS B ON A.COLUMN_NAME = B.COLUMN_NAME AND A.TABLE_NAME=B.TABLE_NAME
LEFT JOIN USER_IND_COLUMNS C ON A.COLUMN_NAME = C.COLUMN_NAME AND A.TABLE_NAME=C.TABLE_NAME 
WHERE A.TABLE_NAME = '表名'
ORDER BY B.COLUMN_ID

备注:NEXT_DAY(SYSDATE,1)函数为当前系统时间的下个星期日时间,数字1代表星期日;

Oracle表中以某一天时间为条件的查询几种写法

写法一

将列转为字符串

select * from Example where to_char(DATE_T,'yyyy-mm-dd')='2018-07-30';

在不考虑sql语句的查询性能的情况下可以考虑这种写法。

写法二

对列截取或模糊查询

select * from Example where trunc(DATE_TRAVEL) = to_date('2018-07-30','yyyymmdd');
select * from Example where DATE_T like to_date('2018-07-30','yyyymmdd');

在不考虑sql语句的查询性能的情况下可以考虑这种写法。

写法三

不对列操作,通过设置并列条件

select * from Example  where DATE_T>= to_date('2018-07-30','yyyymmdd') and DATE_T< to_date('2018-07-30','yyyymmdd') +1;

这种写法没有对字段操作,如果在DATE_T上建立了索引,会走索引查询。查询性能较好

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持好代码网。