可以使用to_char()、concat()等函数实现查询前一小时、前一天、前一个月或者前一年的数据。
1、查询一小时
1)to_char(sysdate,'yyyy-mm-dd ')将系统当前时间转换为字符类型,仅取出年月日
2)|| 字符串连接符
3)to_char(sysdate,'hh24')-1取出系统当前时间的小时部分,hh24小时是24进制的
4)concat是字符串连接函数
select concat(to_char(sysdate,'yyyy-mm-dd ')||(to_char(sysdate,'hh24')-1),':00:00') start_time,concat(to_char(sysdate,'yyyy-mm-dd hh24'),':00:00') end_time from dual
2、查询前一天
1)to_char(sysdate,'yyyy-mm-dd ')将系统当前时间转换为字符类型,仅取出年月日
2)|| 字符串连接符
select to_char(sysdate-1,'yyyy-mm-dd ')||'00:00:00' start_time,to_char(sysdate-1,'yyyy-mm-dd ')||'23:59:59' end_time from dual
3、查询前一个月
1)to_char(sysdate,'yyyy-mm-dd ')将系统当前时间转换为字符类型,仅取出年月日
2)|| 字符串连接符
3)add_months(sysdate,-1)取出系统当前时间月部分,然后-1
4)concat是字符串连接函数
select concat(to_char(sysdate,'yyyy')||to_char(add_months(sysdate,-1), '-MM-'),'01 00:00:00')start_time,
concat(to_char(sysdate,'yyyy')||to_char(add_months(sysdate,-1), '-MM-')||to_char(LAST_DAY(sysdate),'dd '),'23:59:59') end_time from dual
4、查询前一年
1) extract(year from sysdate) 从系统日期从取出年部分
2)|| 字符串连接符
3)to_char(LAST_DAY(sysdate),'dd ')取出系统日期中的最后一天
4)concat是字符串连接函数
select extract(year from sysdate)-1||'-01-01 00:00:00' start_time,concat(extract(year from sysdate)-1||'-12-'||to_char(LAST_DAY(sysdate),'dd '),'23:59:59') end_time from dual