oracle 求两个时间点直接的分钟、小时数
1、获得时间差毫秒数:
select ceil((To_date('2008-05-02 00:00:00' , 'yyyy-mm-dd hh24-mi-ss') - To_date('2008-04-30 23:59:59' , 'yyyy-mm-dd hh24-mi-ss')) * 24 * 60 * 60 * 1000) 相差豪秒数 FROM DUAL;
相差豪秒数
----------
86401000
2、获得相差秒数:
select ceil((To_date('2008-05-02 00:00:00' , 'yyyy-mm-dd hh24-mi-ss') - To_date('2008-04-30 23:59:59' , 'yyyy-mm-dd hh24-mi-ss')) * 24 * 60 * 60) 相差秒数 FROM DUAL;
相差秒数
----------
86401
3、获得相差分钟数、小时数,以此类推,默认时间相减获得相差的天数
4、获得相差的月份数
select (EXTRACT(year FROM to_date('2009-05-01','yyyy-mm-dd')) - EXTRACT(year FROM to_date('2008-04-30','yyyy-mm-dd'))) * 12 +
EXTRACT(month FROM to_date('2008-05-01','yyyy-mm-dd')) - EXTRACT(month FROM to_date('2008-04-30','yyyy-mm-dd')) months
from dual;
MONTHS
----------
13
这里可以直接使用months_between函数
5、获得相差的年份
select EXTRACT(year FROM to_date('2009-05-01','yyyy-mm-dd')) - EXTRACT(year FROM to_date('2008-04-30','yyyy-mm-dd')) years from dual;
YEARS
----------
1
6、获得时间的方法:
select sysdate,add_months(sysdate,12) from dual; --加1年
select sysdate,add_months(sysdate,1) from dual; --加1月
select sysdate,TO_CHAR(sysdate+7,'yyyy-mm-dd HH24:MI:SS') from dual; --加1星期
select sysdate,TO_CHAR(sysdate+1,'yyyy-mm-dd HH24:MI:SS') from dual; --加1天
select sysdate,TO_CHAR(sysdate+1/24,'yyyy-mm-dd HH24:MI:SS') from dual; --加1小时
select sysdate,TO_CHAR(sysdate+1/24/60,'yyyy-mm-dd HH23:MI:SS') from dual; --加1分钟
select sysdate,TO_CHAR(sysdate+1/24/60/60,'yyyy-mm-dd HH23:MI:SS') from dual; --加1秒
select sysdate+7 from dual; --加7天
将当前日期转换为上一个月
SELECT TO_CHAR(ADD_MONTHS(SYSDATE, -1), 'yyyymm') --获取当前时间的前一个月
FROM DUAL;
select sysdate from dual; /**获取当前时间到秒**/
select sysdate-3 from dual;/**获取当前2天**/
select round(sysdate) as 格式成日期 from dual;
select to_date('2008-9-2','yyyy_mm_dd') as 格式成日期 from dual;
SELECT TO_CHAR(ADD_MONTHS(SYSDATE, -1), 'yyyymm') FROM DUAL; /**--获取当前时间的前一个月,正向后**/
Select last_day(sysdate) from dual;/**本月最受一天**/
/***分别取时间的年、月、日***/
Select to_char(sysdate,'YYYY') from dual;
select to_char(sysdate,'mm') from dual;
select to_char(sysdate,'dd') from dual;
一下是转载 jenry-云飞扬:
1。上月末天:
SQL> select to_char(add_months(last_day(sysdate),-1),'yyyy-MM-dd') LastDay from
dual;
LASTDAY
----------
2005-05-31
2。上月今天
SQL> select to_char(add_months(sysdate,-1),'yyyy-MM-dd') PreToday from dual;
PRETODAY
----------
2005-05-21
3.上月首天
SQL> select to_char(add_months(last_day(sysdate)+1,-2),'yyyy-MM-dd') firstDay from dual;
FIRSTDAY
----------
2005-05-01
4.按照每周进行统计
SQL> select to_char(sysdate,'ww') from dual group by to_char(sysdate,'ww');
TO
--
25
5。按照每月进行统计
SQL> select to_char(sysdate,'mm') from dual group by to_char(sysdate,'mm');
TO
--
06
6。按照每季度进行统计
SQL> select to_char(sysdate,'q') from dual group by to_char(sysdate,'q');
T
-
2
7。按照每年进行统计
SQL> select to_char(sysdate,'yyyy') from dual group by to_char(sysdate,'yyyy');
TO_C
----
2005
8.要找到某月中所有周五的具体日期
select to_char(t.d,'YY