--获取系统的时间
select sysdate from dual;
--ceil()向上1取整
--floor()向下取整
--得到相差的天数
select (to_date('2012-10-1','YYYY-MM-DD')-to_date('2011-9-11','YYYY-MM-DD')) from dual;
--得到相差的年份===使用相差的月数除以12
select floor(months_between(sysdate,to_date('2010-02-02','yyyy-mm-dd'))/12) from dual;
--得到相差的月=====第一个时间大才能为正
select floor(months_between(sysdate,to_date('2011-9-01','YYYY-MM-DD'))) from dual;
--1、oracle 日期加减
select sysdate,add_months(sysdate,12) from dual; --日期加一年
/*SYSDATE ADD_MONTHS(SYSDATE,12)
------------------------- -------------------------
25-6月 -09 25-6月 -10
*/
select sysdate,add_months(sysdate,1) from dual; --日期加一月
/*
SYSDATE ADD_MONTHS(SYSDATE,1)
------------------------- -------------------------
25-6月 -09 25-7月 -09
*/
select sysdate,sysdate+1 from dual; --日期加一天
/*
SYSDATE SYSDATE+1
------------------------- -------------------------
25-6月 -09 26-6月 -09
*/
select to_char(sysdate,'YYYY-MM-dd hh24:mi:ss') oldtime,
to_char(sysdate+1/24,'YYYY-MM-dd hh24:mi:ss') newtime
from dual; --时间加一个小时
/*
OLDTIME NEWTIME
------------------- -------------------
2009-06-25 16:04:23 2009-06-25 17:04:23
*/
select to_char(sysdate,'YYYY-MM-dd hh24:mi:ss') oldtime,
to_char(sysdate+1/24/60,'YYYY-MM-dd hh24:mi:ss') newtime
from dual; --时间加一分钟
/*
OLDTIME NEWTIME
------------------- -------------------
2009-06-25 16:06:13 2009-06-25 16:07:13
*/
select to_char(sysdate,'YYYY-MM-dd hh24:mi:ss') oldtime,
to_char(sysdate+1/24/60/60,'YYYY-MM-dd hh24:mi:ss') newtime
from dual; --时间加一秒钟
/*
OLDTIME NEWTIME
------------------- -------------------
2009-06-25 16:07:28 2009-06-25 16:07:29
*/
--2、其它
--求每个月最后一天,上篇文章介绍了一个方法:
select trunc(add_months(sysdate,1),'mm')-1 from dual;
--30-6月 -09
--其实oracle 提供了相应的函数last_day
select last_day(sysdate) from dual;
/*
LAST_DAY(SYSDATE)
-------------------------
30-6月 -09
*/
select last_day(to_date('2008-03-01','yyyy-mm-dd')) from dual;
/*
LAST_DAY(TO_DATE('2008-03-01','YYYY-MM-DD'))
-------------------------
31-3月 -08
*/
--求每个月的第一天,上篇文章介绍了一个方法:
select trunc(sysdate,'mm') from dual;
--01-6月 -09
--我们也使用LAST_DAY和函数实现:求上一个月的最后一天然后再在加一天,就是当月的第一天
select last_day(add_months(sysdate,-1))+1 fd from dual;
/*
FD
-------------------------
01-6月 -09
*/
--next_day用法:使用中文标示工作日
select next_day(sysdate,'星期五') "下周五" from dual;
/*
下周五
-------------------------
03-7月 -09
*/
--使用数字标示工作日:1表示的是周日,2表示的是周一,3表示的是周二,依此类推。
select next_day(sysdate,6) "下周五" from dual;
/*
下周五
-------------------------
03-7月 -09
*/
分享到:
相关推荐
主要介绍了Oracle查询优化日期运算实例详解的相关资料,需要的朋友可以参考下
Oracle 函数大全(字符串函数,数学函数,日期函数,逻辑运算函数,其他函数)
记载了oracle中的单行函数和多行函数。Oracle 函数大全(字符串函数,数学函数,日期函数,逻辑运算函数,其他函数)
Oracle Database 11g 标准课程第三章 函数日期函数-日期函数的运算
主要介绍了Oracle实现查询2个日期所跨过的月份列表/日期列表的方法,结合实例形式分析了Oracle日期相关查询与运算相关操作技巧,需要的朋友可以参考下
4.3.2 集合运算中的空值行为 110 4.3.3 空值与GROUP BY和ORDER BY 112 4.3.4 空值与聚合函数 114 4.4 小结 114 第5章 关于问题 116 5.1 问出好的问题 116 5.2 提问的目的 117 5.3 问题的种类 117 5.4 关于...
资源共享 Oracle 函数大全[字符串函数,数学函数,日期函数] 字符串函数,数学函数,日期函数,逻辑运算函数,其他函数
描述 : 传回一个数值,该数值是按照指定的小数位元数进行四舍五入运算的结果 参数: number : 欲处理之数值 decimal_places : 四舍五入 , 小数取几位 ( 预设为 0 ) select round(123.456, 0) from dual; 返回123 ...
[例3-1] 问题:编写一个过程,求和运算。 SET SERVEROUTPUT ON; DECLARE a number:=1; BEGIN a:=a+5; DBMS_OUTPUT.PUT_LINE('和为:'||TO_CHAR(a)); END; / 【例3-2】:使用%TYPE声明变量,输出制定表中的相关...
9、查看数据库的创建日期和归档方式 Select Created, Log_Mode, Log_Mode From V$Database; 四、ORACLE用户连接的管理 用系统管理员,查看当前数据库有几个用户连接: SQL> select username,sid,serial# from v$...
Oracle 函数大全包括各种内置函数,(字符串函数,数学函数,日期函数,逻辑运算函数,其他函数)
Oracle函数 字符串函数 数学函数 日期函数 逻辑运算函数
§12.6.1 字符及数字运算特点 245 §12.6.2 Boolean 赋值 245 §12.6.3 数据库赋值 245 §12.6.4 可转换的类型赋值 246 §12.7 变量作用范围以可见性 248 §12.8 注释 248 §12.9 简单例子 249 §12.9.1 简单数据...
Oracle 函数大全 Oracle 函数大全(字符串函数,数学函数,日期函数,逻辑运算函数,其他函数) SQL中的单记录函数
Oracle 函数大全(字符串函数,数学函数,日期函数,逻辑运算函数,其他函数)
想成为oracle高手就看下吧,很系统的资料。希望对你有帮助 内容摘要: 基本SQL SELECT语句 目标 SQL SELECT 语句的功能 基本 SELECT 语句 选择全部列 选择特定的列 Writing SQL Statements 过滤和排序数据 目标 在...