selectadd_months(sysdate" />
文档库 最新最全的文档下载
当前位置:文档库 › Oracle日期函数大全

Oracle日期函数大全

Oracle日期函数大全
Oracle日期函数大全

在oracle中有很多关于日期的函数,如:

1、add_months()用于从一个日期值增加或减少一些月份

date_value:=add_months(date_value,number_of_months)

例:

SQL> select add_months(sysdate,12) "Next Year" from dual;

Next Year

----------

13-11月-04

SQL> select add_months(sysdate,112) "Last Year" from dual;

Last Year

----------

13-3月 -13

SQL>

2、current_date()返回当前会放时区中的当前日期

date_value:=current_date

SQL> column sessiontimezone for a15

SQL> select sessiontimezone,current_date from dual;

SESSIONTIMEZONE CURRENT_DA

--------------- ----------

+08:00 13-11月-03

SQL> alter session set time_zone='-11:00'

2 /

会话已更改。

SQL> select sessiontimezone,current_timestamp from dual;

SESSIONTIMEZONE CURRENT_TIMESTAMP

--------------- ------------------------------------

-11:00 12-11月-03 04.59.13.668000 下午 -11:

00

SQL>

3、current_timestamp()以timestamp with time zone数据类型返回当前会放时区中的当前日期timestamp_with_time_zone_value:=current_timestamp([timestamp_precision])

SQL> column sessiontimezone for a15

SQL> column current_timestamp format a36

SQL> select sessiontimezone,current_timestamp from dual;

SESSIONTIMEZONE CURRENT_TIMESTAMP

--------------- ------------------------------------

+08:00 13-11月-03 11.56.28.160000 上午 +08:

00

SQL> alter session set time_zone='-11:00'

2 /

会话已更改。

SQL> select sessiontimezone,current_timestamp from dual;

SESSIONTIMEZONE CURRENT_TIMESTAMP

--------------- ------------------------------------

-11:00 12-11月-03 04.58.00.243000 下午 -11:

00

SQL>

4、dbtimezone()返回时区

varchar_value:=dbtimezone

SQL> select dbtimezone from dual;

DBTIME

------

-07:00

SQL>

5、extract()找出日期或间隔值的字段值

date_value:=extract(date_field from [datetime_value|interval_value])

SQL> select extract(month from sysdate) "This Month" from dual;

This Month

----------

11

SQL> select extract(year from add_months(sysdate,36)) "3 Years Out" from dual;

3 Years Out

-----------

2006

SQL>

6、last_day()返回包含了日期参数的月份的最后一天的日期

date_value:=last_day(date_value)

SQL> select last_day(date'2000-02-01') "Leap Yr?" from dual;

Leap Yr?

----------

29-2月 -00

SQL> select last_day(sysdate) "Last day of this month" from dual;

Last day o

----------

30-11月-03

SQL>

7、localtimestamp()返回会话中的日期和时间

timestamp_value:=localtimestamp

SQL> column localtimestamp format a28

SQL> select localtimestamp from dual;

LOCALTIMESTAMP

----------------------------

13-11月-03 12.09.15.433000

下午

SQL> select localtimestamp,current_timestamp from dual;

LOCALTIMESTAMP CURRENT_TIMESTAMP

---------------------------- ------------------------------------

13-11月-03 12.09.31.006000 13-11月-03 12.09.31.006000 下午 +08: 下午 00

&

Oracle 获取系统日期,日期转换函数

Oracle 获取系统日期,日期转换函数 learning oracle 获取系统日期和日期转换函数应用获取系统日期:SYSDA TE() 格式化日期:TO_CHAR(SYSDATE(),'YY/MM/DD HH24:MI:SS) 或TO_DATE(SYSDA TE(),'YY/MM/DD HH24:MI:SS) 格式化数字:TO_NUMBER 注:TO_CHAR 把日期或数字转换为字符串 TO_CHAR(number, '格式') TO_CHAR(salary, '$99,999.99') TO_CHAR(date, '格式') TO_DATE 把字符串转换为数据库中的日期类型 TO_DATE(char, '格式') TO_NUMBER 将字符串转换为数字 TO_NUMBER(char, '格式') 返回系统日期,输出25-12月-09 select sysdate from dual; mi是分钟,输出2009-12-25 14:23:31 select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual; mm会显示月份,输出2009-12-25 14:12:31 select to_char(sysdate,'yyyy-MM-dd HH24:mm:ss') from dual; 输出09-12-25 14:23:31 select to_char(sysdate,'yy-mm-dd hh24:mi:ss') from dual 输出2009-12-25 14:23:31 select to_date('2009-12-25 14:23:31','yyyy-mm-dd,hh24:mi:ss') from dual 而如果把上式写作: select to_date('2009-12-25 14:23:31','yyyy-mm-dd,hh:mi:ss') from dual 则会报错,因为小时hh是12进制,14为非法输入,不能匹配。 输出$10,000,00 : select to_char(1000000,'$99,999,99') from dual; 输出RMB10,000,00 : select to_char(1000000,'L99,999,99') from dual; 输出1000000.12 : select trunc(to_number('1000000.123'),2) from dual; select to_number('1000000.123') from dual; 转换的格式: 表示year 的:y 表示年的最后一位、 yy 表示年的最后2位、 yyy 表示年的最后3位、 yyyy 用4位数表示年 表示month的:mm 用2位数字表示月、 mon 用简写形式,比如11月或者nov 、 month 用全称,比如11月或者november 表示day的:dd 表示当月第几天、 ddd 表示当年第几天、

Oracle的to_date函数

Oracle的to_date函数 日期格式参数含义说明 D一周中的星期几 DAY天的名字,使用空格填充到9个字符 DD月中的第几天 DDD年中的第几天 DY天的简写名 IW ISO标准的年中的第几周 IYYYISO标准的四位年份 YY四位年份 YYY,YY,Y年份的最后三位,两位,一位 HH小时,按12小时计 HH24小时,按24小时计 MI分 SS秒 MM月 Mon月份的简写注: 在不同的语言下显示出来的数据不同,在中文下显示为5月,在英文下显示为MAY Month月份的全名 W该月的第几个星期

WW年中的第几个星期 1.日期时间间隔操作 当前时间减去7分钟的时间 select sysdate,sysdate -interval ’7’ MINUTE from dual 当前时间减去7小时的时间 select sysdate -interval ’7’ hour from dual 当前时间减去7天的时间 select sysdate - interval ’7’ day from dual 当前时间减去7月的时间 select sysdate,sysdate -interval ’7’ month from dual 当前时间减去7年的时间 select sysdate,sysdate -interval ’7’ year from dual 时间间隔乘以一个数字 select sysdate,sysdate -8 *interval ’2’ hour from dual 2.日期到字符操作 select sysdate,to_char(sysdate,’y y-mm-dd hh24:mi: ss’) from dual select sysdate,to_char(sysdate,’yy-mm-dd hh: mi: ss’) from dual select sysdate,to_char(sysdate,’yy-ddd hh:

Oracle BIEE 时间函数 (ago,todate)

Oracle BIEE 中的时间维与时间轴函数 累计、同比、环比是BI 项目中常用的分析方法。本文讲述如何利用Oracle BIEE 的时间维(Time Dimension)及时间轴函数(Time Series Conversion Function)实现累计、同比、环比计算。本文使用的示例数据可以通过此链接下载:https://www.wendangku.net/doc/901830561.html,/。如果你不了解如何创建Oracle BIEE 资料库,请参考之前的文章Hello BIEE。 目录 ?时间轴函数概述 ?创建时间维的准备工作 ?创建时间维 ?使用时间轴函数定义度量值 ?查询 ?参考 时间轴函数概述 累计、同比、环比是BI 项目中常用的分析方法。如果采用关系型数据库,直接通过SQL 语句进行这样的计算是比较麻烦的。Oracle BIEE 提供的解决方法是时间轴函数。时间轴函数是位于逻辑模型层内的函数,使用时间轴函数能够定义出“去年同期值”或“本年累计值”之类的与时间相关的计算字段。Oracle BIEE 现在支持两个时间轴函数: ?Ago:从当前时间起回溯用户指定的n 个时间段,返回当时的度量值。 ?ToDate:从用户指定时间段的起点开始,到当前时间为止,计算度量值的累计值。 使用时间轴函数的前提条件是在逻辑模型内定义了时间维。上面两个函数说明中的“时间段”实际上指的是时间维的层级(Level)。例如使用Ago 函数定义“去年同期值”,指定的时间段为“年”这一层级,指定的回溯周期为1,表示得到去年的值。再比如使用ToDate 函数定义“本年累计值”,指定的时间段也是“年”这一层级,表示从年的起点(年初)开始到当前时间为止,求度量值的累计值。 创建时间维的准备工作 时间维的创建过程与创建普通维度基本相同,只是维度对象的某些设置不同。因此创建物理模型、逻辑模型、及展现模型的过程在此不细说了,如果你不了解请参考之前的文章Hello BIEE。 在物理模型层,导入时间维表V_COMMON_DATE;将V_COMMON_DATE.DAY_ID 定义为V_COMMON_DATE 的主键;将V_COMMON_DATE.DAY_ID 定义为 V_FINANCE_EXPENSE.CONSUME_DATE 的外键。

Oracle常用函数及使用案例(珍藏版)

Oracle常用函数及使用案例(珍藏版) 一:sql函数: lower(char):将字符串转化为小写的格式。 upper(char):将字符串转化为大写的格式。 length(char):返回字符串的长度。 substr(char,m,n):取字符串的字串。 案例1.将所有员工的名字按小写的方式显示 select lower(ename),sal from emp; 案例2.将所有员工的名字按大写的方式显示。 select upper(ename),sal from emp; 案例3.显示正好为五个字符的的员工的姓名。 select * from emp where length(ename)=5; 案例4.显示所有员工姓名的前三个字符。 select substr(ename,1,3) from emp;//从名字的第一个字符开始取,向后取三个字符。 案例5.以首字母为大写的方式显示所有员工的姓名。 (1)首字母大写:select upper(substr(ename,1,1)) from emp; (2)完成后面字母小写。select lower(substr(ename,2,length(ename)-1)) from emp; (3)合并select upper(substr(ename,1,1))||lower(substr(ename,2,length(ename)-1)) from emp; 案例6.以首字母为小写的方式显示所有员工的姓名。(需要有较高的灵活度,细心分析和清晰思路) (1)首字母小写:select upper(substr(ename,1,1)) from emp; (2)完成后面字母大写。select lower(substr(ename,2,length(ename)-1)) from emp; (3)合并select lower(substr(ename,1,1))||upper(substr(ename,2,length(ename)-1)) from emp; 案例7.函数(替换):replace(char1,search_string,replace_string); 显示所有员工的姓名,用“我要替换A”替代所有“A”。 select replace(ename,'A','我是老鼠')from emp; 案例8.以首字母为小写的方式显示所有员工的姓名。 select replace(ename,substr(ename,1,1),lower(substr(ename,1,1)))from emp; 案例9.以首字母为大写的方式显示所有员工的姓名。 Select replace(ename,substr(ename,2,length(ename)-1),lower(substr(ename,2,length(ename) -1)))from emp; 二:数学函数:(在财务中用的比较多) ronud(sal)用于四舍五默认取整; ronud(sal,1)用于四舍五留一位小数。 trunc(sal)取整,忽略小数。截去小数部分。 trunc(sal,1)截取;小数点留一位,之后的右边的省去。 trunc(sal,-1)截取;只留整数,个位数取零。 floor(sal)向下最接近取整;比如1.1值为1.

Oracle中trunc()函数用法处理日期、数字类型数据

trunc()函数用法处理日期、数字类型数据 一、日期 TRUNC函数为指定元素而截去的日期值。 其具体的语法格式如下: TRUNC(date[,fmt]) 其中: date一个日期值 fmt日期格式,该日期将由指定的元素格式所截去。忽略它则由最近的日期截去如果当日日期是:2011-3-18 1.select trunc(sysdate) from dual --2011-3-18今天的日期为2011-3-18 2.select trunc(sysdate, 'mm') from dual --2011-3-1返回当月第一天. 3.select trunc(sysdate,'yy') from dual --2011-1-1返回当年第一天 4.select trunc(sysdate,'dd') from dual --2011-3-18返回当前____年__月__日 5.select trunc(sysdate,'yy') from dual --2011-1-1返回当年第一天 6.select trunc(sysdate,'d') from dual --2011-3-13 (星期天)返回当前星期的第一天 7.select trunc(sysdate, 'hh') from dual --2011-3-18 14:00:00当前时间为14:41 8.select trunc(sysdate, 'mi') from dual --2011-3-18 14:41:00 TRUNC()函数没有秒的精确 二、数字 TRUNC(number,num_digits) Number需要截尾取整的数字。

ORACLE时间函数

ORACLE时间函数: sysdate+(5/24/60/60) 在系统时间基础上延迟5秒 sysdate+5/24/60 在系统时间基础上延迟5分钟 sysdate+5/24 在系统时间基础上延迟5小时 sysdate+5 在系统时间基础上延迟5天 add_months(sysdate,-5) 在系统时间基础上延迟5月 add_months(sysdate,-5*12) 在系统时间基础上延迟5年 上月末的日期:select last_day(add_months(sysdate, -1)) from dual; 本月的最后一秒:select trunc(add_months(sysdate,1),'MM') - 1/24/60/60 from dual 本周星期一的日期:select trunc(sysdate,'day')+1 from dual 年初至今的天数:select ceil(sysdate - trunc(sysdate, 'year')) from dual; 今天是今年的第几周 :select to_char(sysdate,'fmww') from dual 今天是本月的第几周:SELECT TO_CHAR(SYSDATE,'WW') - TO_CHAR(TRUNC(SYSDATE,'MM'),'WW') + 1 AS "weekOfMon" FROM dual 本月的天数 SELECT to_char(last_day(SYSDATE),'dd') days FROM dual 今年的天数 select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual 下个星期一的日期 SELECT Next_day(SYSDATE,'monday') FROM dual ======================================= ===== --计算工作日方法 create table t(s date,e date); alter session set nls_date_format = 'yyyy-mm-dd'; insert into t values('2003-03-01','2003-03-03'); insert into t values('2003-03-02','2003-03-03'); insert into t values('2003-03-07','2003-03-08'); insert into t values('2003-03-07','2003-03-09'); insert into t values('2003-03-05','2003-03-07'); insert into t values('2003-02-01','2003-03-31'); -- 这里假定日期都是不带时间的,否则在所有日期前加trunc即可。 select s,e,e-s+1 total_days, trunc((e-s+1)/7)*5 + length(replace(substr('01111100111110',to_char(s,'d'),mod(e-s+1,7

Oracle中TO_DATE函数

Oracle中TO_DATE函数 Oracle中TO_DATE格式 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digits 两位年显示值:07 yyy three digits 三位年显示 值:007 yyyy four digits 四位年显示值:2007 Month: mm number 两位月显示值:11 mon abbreviated 字符集表示显示值:11月,若是英文版,显示nov month spelled out 字符集表示显示值:11月,若是英文版,显示november

Day: dd number 当月第几天显示值:02 ddd number 当年第几天显示值:02 dy abbreviated 当周第几天简写显示值:星期五,若是英文版,显示fri day spelled out 当周第几天全写显示值:星期五,若是英文版,显示friday ddspth spelled out, ordinal twelfth Hour: hh two digits 12小时进制 显示值:01 hh24 two digits 24小时进制显示值:13 Minute: mi two digits 60进制 显示值:45 Second:

ss two digits 60进制 显示值:25 其它 Q digit 季度 显示值:4 WW digit 当年第几周 显示值:44 W digit 当月第几周 显示值:1 24小时格式下时间范围为:0:00:00 - 23:59:59.... 12小时格式下时间范围为:1:00:00 - 12:59:59 .... 1. 日期和字符转换函数用法(to_date,to_char) select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual; //日期转化为字符串 select to_char(sysdate,'yyyy') as nowYear from dual; //获取时间的年 select to_char(sysdate,'mm') as nowMonth from dual; //获取时间的月

oracle SQL里常用的时间函数

oracle SQL里常用的时间函数,经典推荐 相信很多人都有过统计某些数据的经历,比如,要统计财务的情况,可能要按每年,每季度,每月,甚至每个星期来分别统计。那在oracle 中应该怎么来写sql语句呢,这个时候Oracle的日期函数会给我们很多帮助。 常用日期型函数 1。Sysdate 当前日期和时间 SQL> Select sysdate from dual; SYSDATE ---------- 21-6月-05 2。Last_day 本月最后一天 SQL> Select last_day(sysdate) from dual; LAST_DAY(S ---------- 30-6月-05 3。Add_months(d,n) 当前日期d后推n个月

用于从一个日期值增加或减少一些月份 date_value:=add_months(date_value,number_of_months) SQL> Select add_months(sysdate,2) from dual; ADD_MONTHS ---------- 21-8月-05 4。Months_between(f,s) 日期f和s间相差月数 SQL> select months_between(sysdate,to_date('2005-11-12','yyyy-mm-dd'))fro m dual; MONTHS_BETWEEN(SYSDATE,TO_DATE('2005-11-12','YYYY-MM-D D')) ---------------------------------------------------------- -4.6966741 5。NEXT_DAY(d, day_of_week) 返回由"day_of_week"命名的,在变量"d"指定的日期之后的第一个工作日的日期。参数"day_of_week"必须为该星期中的某一天。

Oracle通过日期获取星座函数

Oracle通过日期获取星座函数 create or replace function get_xingzuo(dt in date) RETURN V ARCHAR2 is xingzuo VARCHAR2(20); dnum number(4); begin dnum:=to_number(to_char(dt,'MMdd')); select case when dnum>=1222 or dnum<=119 then '摩羯座' when dnum>=120 and dnum<=218 then '水瓶座' when dnum>=219 and dnum<=320 then '双鱼座' when dnum>=321 and dnum<=420 then '牡羊座' when dnum>=421 and dnum<=520 then '金牛座' when dnum>=521 and dnum<=621 then '双子座' when dnum>=622 and dnum<=722 then '巨蟹座' when dnum>=723 and dnum<=822 then '狮子座' when dnum>=823 and dnum<=922 then '处女座' when dnum>=923 and dnum<=1022 then '天秤座' when dnum>=1023 and dnum<=1121 then '天蝎座' when dnum>=1122 and dnum<=1221 then '射手座' end into xingzuo from dual; return xingzuo; end;

ORACLE日期函数01(1)

ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digits 两位年显示值:07 yyy three digits 三位年显示值:007 yyyy four digits 四位年显示值:2007 Month: mm number 两位月显示值:11 mon abbreviated 字符集表示显示值:11月,若是英文版,显示nov month spelled out 字符集表示显示值:11月,若是英文版,显示november Day: dd number 当月第几天显示值:02 ddd number 当年第几天显示值:02 dy abbreviated 当周第几天简写显示值:星期五,若是英文版,显示fri day spelled out 当周第几天全写显示值:星期五,若是英文版,显示friday ddspth spelled out, ordinal twelfth Hour: hh two digits 12小时进制显示值:01 hh24 two digits 24小时进制显示值:13 Minute: mi two digits 60进制显示值:45 Second: ss two digits 60进制显示值:25 其它 Q digit 季度显示值:4 WW digit 当年第几周显示值:44 W digit 当月第几周显示值:1 24小时格式下时间范围为:0:00:00 - 23:59:59.... 12小时格式下时间范围为:1:00:00 - 12:59:59 .... 1. 日期和字符转换函数用法(to_date,to_char) select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual; //日期转化为字符串

Oracle计算时间差函数

Oracle计算时间差函数 两个Date类型字段 START_DATE END_DATE 计算这两个日期的时间差 (分别以天 小时 分钟 秒 毫秒) 天 ROUND(TO_NUMBER(END_DATE-START_DATE)) 小时 ROUND(TO_NUMBER(END_DATE-START_DATE)*24) 分钟 ROUND(TO_NUMBER(END_DATE-START_DATE)*24*60) 秒 ROUND(TO_NUMBER(END_DATE-START_DATE)*24*60*60) 毫秒 ROUND(TO_NUMBER(END_DATE-START_DATE)*24*60*60*1000) Oracle计算时间差函数2008-08-20 10 00两个Date类型字段 START_DATE END_DATE 计算这两个日期的时间差(分别以天 小时 分钟 秒 毫秒) 天 ROUND(TO_NUMBER(END_DATE-START_DATE))小时 ROUND(TO_NUMBER(END_DATE-START_DATE)*24)分钟 ROUND(TO_NUMBER(END_DATE-START_DATE)*24*60)秒 ROUND(TO_NUMBER(END_DATE-START_DATE)*24*60*60)毫秒 ROUND(TO_NUMBER(END_DATE-START_DATE)*24*60*60*1000) 外加to_date与to_char函数 ORACLE中 select to_date('2007-06-28 19 51 20','yyyy-MM-dd HH24 mi

oracle常用函数使用大全

oracle常用函数使用大全 一、运算符 算术运算符:+ - * / 可以在select 语句中使用 连接运算符:|| select deptno|| dname from dept; 比较运算符:> >= = != < <= like between is null in 逻辑运算符:not and or 集合运算符:intersect ,union,union all,minus 要求:对应集合的列数和数据类型相同 查询中不能包含long 列 列的标签是第一个集合的标签 使用order by时,必须使用位置序号,不能使用列名 例:集合运算符的使用: intersect ,union,union all,minus select * from emp intersect select * from emp where deptno=10 ; select * from emp minus select * from emp where deptno=10; select * from emp where deptno=10 union select * from emp where deptno in (10,20); --不包括重复行 select * from emp where deptno=10 union all select * from emp where deptno in (10,20); --包括重复行 二.ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digits 两位年显示值:07 yyy three digits 三位年显示值:007 yyyy four digits 四位年显示值:2007 Month: mm number 两位月显示值:11 mon abbreviated 字符集表示显示值:11月,若是英文版,显示nov month spelled out 字符集表示显示值:11月,若是英文版,显示november

Oracle日期函数大全

在oracle中有很多关于日期的函数,如: 1、add_months()用于从一个日期值增加或减少一些月份 date_value:=add_months(date_value,number_of_months) 例: SQL> select add_months(sysdate,12) "Next Year" from dual; Next Year ---------- 13-11月-04 SQL> select add_months(sysdate,112) "Last Year" from dual; Last Year ---------- 13-3月 -13 SQL> 2、current_date()返回当前会放时区中的当前日期 date_value:=current_date SQL> column sessiontimezone for a15 SQL> select sessiontimezone,current_date from dual; SESSIONTIMEZONE CURRENT_DA --------------- ---------- +08:00 13-11月-03 SQL> alter session set time_zone='-11:00' 2 / 会话已更改。 SQL> select sessiontimezone,current_timestamp from dual; SESSIONTIMEZONE CURRENT_TIMESTAMP --------------- ------------------------------------ -11:00 12-11月-03 04.59.13.668000 下午 -11: 00 SQL> 3、current_timestamp()以timestamp with time zone数据类型返回当前会放时区中的当前日期timestamp_with_time_zone_value:=current_timestamp([timestamp_precision]) SQL> column sessiontimezone for a15

Oracle 时间和日期函数

Oracle 时间和日期函数 在默认情况下,日期数据的格式是DD-MON-YY。其中,DD表示两位数字的日,MON 表示3位数的月份,YY表示两位数字的年。在插入数据时,默认也采用DD-MON-YY格式插入数据。 日期数据的格式由NLS_DATE_FORMA T系统参数来设置,该系统参数存储在INIT.ORA文件和SPFILE.ORA文件中。可以使用SHOW PARAMETERS命令查看这些系统参数的值,另外还可以通过ALTER SYSTEM或ALTER SESSION命令修改该系统参数。ALTER SYSTEM命令表示修改系统参数的文件,这种修改设置在以后的数据库操作中将一直起作用;在ALTER SESSION命令的设置只在当前的会话中起作用,该会话结束后,其设置就会失效。 在Oracle 11g中,系统提供了许多用于处理日期和时间的函数,表5-6描述了常用的日期、时间函数的类型和功能。 表5-6 日期和时间函数 函数说明 add_months(x,y) 在X给定的日期上增加Y个月。如果Y为负数,则表示从X 中减去Y个月 last_day(x) 返回包含在X中的月份的最后一天 months_between(x,y) 返回X和Y之间的月数 next_day(x,day) 返回紧接着X的下一天,参数DAY是一个字符串 sysdate() 返回当前系统的日期 current_date() 返回本地时区的当前日期 new_time(x ,time_zone1 ,time_zon 将时间X从时区TIME_ZONE1转变成时区TIME_ZONE2 e2) localtimestamp() 返回会话中的日期和时间 在Oracle系统中,MONTHS_BETWEEN()函数可以返回两个日期之间的月数,其结果值即可以是正数,也可以是负数。如果第一个参数指定的日期晚于第二个参数指定的日期,则结果值为负数。如下所示: SQL> select months_between(date'1981-11-26',sysdate) 2 from dual; MONTHS_BETWEEN(DATE'1981-11-26',SYSDA TE) ---------------------------------------- -316.76572

Oracle的日期函数(包含季度)

Oracle的日期函数 相信很多人都有过统计某些数据的经历,比如,要统计财务的情况,可能要按每年,每季度,每月,甚至每个星期来分别统计。那在oracle中应该怎么来写sql语句呢,这个时候Oracle的日期函数会给我们很多帮助。 常用日期型函数 1。Sysdate 当前日期和时间 SQL> Select sysdate from dual; SYSDATE ---------- 21-6月 -05 2。Last_day 本月最后一天 SQL> Select last_day(sysdate) from dual; LAST_DAY(S ---------- 30-6月 -05 3。Add_months(d,n) 当前日期d后推n个月 用于从一个日期值增加或减少一些月份 date_value:=add_months(date_value,number_of_months) SQL> Select add_months(sysdate,2) from dual; ADD_MONTHS ---------- 21-8月 -05 4。Months_between(f,s) 日期f和s间相差月数 SQL> select months_between(sysdate,to_date('2005-11-12','yyyy-mm-dd'))from dual; MONTHS_BETWEEN(SYSDA TE,TO_DA TE('2005-11-12','YYYY-MM-DD')) ---------------------------------------------------------- -4.6966741 5。NEXT_DAY(d, day_of_week) 返回由"day_of_week"命名的,在变量"d"指定的日期之后的第一个工作日的日期。参数"day_of_week"必须为该星期中的某一天。 SQL> SELECT next_day(to_date('20050620','YYYYMMDD'),1) FROM dual; NEXT_DAY(T

Oracle时间函数

常用日期型函数 1。Sysdate 当前日期和时间 SQL> Select sysdate from dual; SYSDATE ---------- 21-6月 -05 2。Last_day 本月最后一天 SQL> Select last_day(sysdate) from dual; LAST_DAY(S ---------- 30-6月 -05 3。Add_months(d,n) 当前日期d后推n个月 用于从一个日期值增加或减少一些月份 date_value:=add_months(date_value,number_of_months) SQL> Select add_months(sysdate,2) from dual; ADD_MONTHS ---------- 21-8月 -05 4。Months_between(f,s) 日期f和s间相差月数 SQL> select months_between(sysdate,to_date('2005-11-12','yyyy-mm-dd'))from dual; MONTHS_BETWEEN(SYSDATE,TO_DATE('2005-11-12','YYYY-MM-DD')) ---------------------------------------------------------- -4.6966741 5。NEXT_DAY(d, day_of_week) 返回由"day_of_week"命名的,在变量"d"指定的日期之后的第一个工作日的日期。参数"day_of_week"必须为该星期中的某一天。 SQL> SELECT next_day(to_date('20050620','YYYYMMDD'),1) FROM dual; NEXT_DAY(T ---------- 26-6月 -05 6。current_date()返回当前会话时区中的当前日期

Oracle中的TO_DATE和TO_CHAR函数日期处理

Oracle中的TO_DATE和TO_CHAR函数日期处理 Oracle 中的 TO_DATE 和TO_CHAR函数 oracle 中 TO_DATE 函数的时间格式,以 2008-09-10 23:45:56 为例 格式说明显示值备注 Year(年): yy two digits(两位年) 08 yyy three digits(三位年) 008 yyyy four digits(四位年) 2008 Month(月): mm number(两位月) 09 mon abbreviated(字符集表示) 9月若是英文版, 则显示 sep month spelled out(字符集表示) 9月若是英文版, 则显示 september Day(日): dd number(当月第几天) 10 ddd number(当年第几天) 254 dy abbreviated(当周第几天简写) 星期三若是英文版, 则显示 wed day spelled out(当周第几天全写) 星期三若是英文版, 则显示 wednesday ddspth spelled out, ordinal twelfth tenth Hour(时): hh two digits(12小时进制) 11 hh24 two digits(24小时进制) 23 Minute(分): mi two digits(60进制) 45 Second(秒): ss two digits(60进制) 56 其他: Q digit(季度) 3 WW digit(当年第几周) 37 W digit(当月第几周) 2 说明: 12小时格式下时间范围为: 1:00:00 - 12:59:59(12 小时制下的 12:59:59 对应 24 小时制下的 00:59:59) 24小时格式下时间范围为: 0:00:00 - 23:59:59 1. 日期和字符转换函数用法(to_date,to_char)

Oracle BIEE 中的时间维与时间轴函数

Oracle BIEE 中的时间维与时间轴函数累计、同比、环比是 BI 项目中常用的分析方法。本文讲述如何利用 Oracle BIEE 的时间维(Time Dimension)及时间轴函数(Time Series Conversion Function)实现累计、同比、环比计算。本文使用的示例数据可以通过此链接下载:https://www.wendangku.net/doc/901830561.html,/。如果你不了解如何创建 Oracle BIEE 资料库,请参考之前的文章Hello BIEE。 目录 ?时间轴函数概述 ?创建时间维的准备工作 ?创建时间维 ?使用时间轴函数定义度量值 ?查询 ?参考 时间轴函数概述 累计、同比、环比是 BI 项目中常用的分析方法。如果采用关系型数据库,直接通过 SQL 语句进行这样的计算是比较麻烦的。Oracle BIEE 提供的解决方法是时间轴函数。时间轴函数是位于逻辑模型层内的函数,使用时间轴函数能够定义出“去年同期值”或“本年累计值”之类的与时间相关的计算字段。Oracle BIEE 现在支持两个时间轴函数: ?Ago:从当前时间起回溯用户指定的 n 个时间段,返回当时的度量值。 ?ToDate:从用户指定时间段的起点开始,到当前时间为止,计算度量值的累计值。 使用时间轴函数的前提条件是在逻辑模型内定义了时间维。上面两个函数说明中的“时间段”实际上指的是时间维的层级(Level)。例如使用 Ago 函数定义“去年同期值”,指定的时间段为“年”这一层级,指定的回溯周期为 1,表示得到去年的值。再比如使用 ToDate 函数定义“本年累计值”,指定的时间段也是“年”这一层级,表示从年的起点(年初)开始到当前时间为止,求度量值的累计值。 创建时间维的准备工作 时间维的创建过程与创建普通维度基本相同,只是维度对象的某些设置不同。因此创建物理模型、逻辑模型、及展现模型的过程在此不细说了,如果你不了解请参考之前的文章Hello BIEE。 在物理模型层,导入时间维表 V_COMMON_DATE;将 V_COMMON_DATE.DAY_ID 定义为 V_COMMON_DATE 的主键;将 V_COMMON_DATE.DAY_ID 定义为 V_FINANCE_EXPENSE.CONSUME_DATE 的外键。

oracle带时分秒日期的比较

oracle 中不带时分秒de字符串 to_date 转换时间后与带时分秒dedate型字段做带等值de比较 (>=,<=,=)时,由于字符串不带时分秒,所以转换后时分秒默认为00:00:00,oracle中比较date是以一个时间点来比较de,精确到秒甚至毫秒微秒纳秒,所以date字段de时分秒不为00:00:00de就与不带时分秒字符串转换后dedate匹配不上。示例:表中huhai_seq_value所you数据 MYDATE ----------- 2009-03-02 2009-03-02 2009-03-02 2009-03-03 2009-03-03 2009-03-03 --sql1: select hsv.mydate from huhai_seq_value hsv where hsv.mydate = to_date('2009-03-03','yyyy-mm-dd ');

sql1查询结果: MYDATE ----------- 2009-03-03 2009-03-03 --sql2: select hsv.mydate from huhai_seq_value hsv where to_char(hsv.mydate,'yyyy-mm-dd') = '2009-03-03'; sql查询结果: MYDATE ----------- 2009-03-03 2009-03-03 2009-03-03 结论:所以在做不带时分秒de日期比较时最好用to_char函数转换后与字符串比较。

用between比较两个时间 例 select * from tbl_name where issue_time between to_date('2007-04-12 23:59:59','YYYY-MM-DD HH24:MI:SS') and sysdate;

Oracle时间日期操作函数及使用示例

Oracle时间日期操作 sysdate+(5/24/60/60) 在系统时间基础上延迟5秒 sysdate+5/24/60 在系统时间基础上延迟5分钟 sysdate+5/24 在系统时间基础上延迟5小时 sysdate+5 在系统时间基础上延迟5天 add_months(sysdate,-5) 在系统时间基础上延迟5月 add_months(sysdate,-5*12) 在系统时间基础上延迟5年 上月末的日期:select last_day(add_months(sysdate, -1)) from dual; 本月初的日期: 本月的最后一秒:select trunc(add_months(sysdate,1),'MM') - 1/24/60/60 from dual 本周星期一的日期:select trunc(sysdate,'day')+1 from dual Oracle 获取本周、本月、本季、本年的第一天和最后一天 --本周 select trunc(sysdate,'d')+1 from dual; select trunc(sysdate,'d')+7 from dual; --本月 select trunc(sysdate,'mm') from dual; select last_day(trunc(sysdate)) from dual; --本季 select trunc(sysdate,'Q') from dual; select add_months(trunc(sysdate,'Q'),3)-1 from dual; --本年 select trunc(sysdate,'yyyy') from dual; select add_months(trunc(sysdate,'yyyy'),12)-1 from dual; -- 获取上月的开始时间和结束时间 select to_char(to_date(to_char(add_months(sysdate,-1),'yyyy-mm'),'yyyy-mm'),'yyyy-mm-dd hh24:mi:ss') from dual; select to_char(to_date(to_char(sysdate,'yyyy-mm'),'yyyy-mm'),'yyyy-mm-dd hh24:mi:ss') from dual; -- 获取前一天的开始时间和结束时间 select to_char(to_date(to_char(sysdate-1,'yyyy-mm-dd'),'yyyy-mm-dd'),'yyyy-mm-dd hh24:mi:ss') from dual; select to_char(to_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy-mm-dd'),'yyyy-mm-dd hh24:mi:ss') from dual; -- 获取上一个小时的开始时间和结束时间 select to_date(to_char(sysdate,'yyyy-mm-dd')||(to_char(sysdate,'hh24')-1),'yyyy-mm-dd hh24') from dual; select to_date(to_char(sysdate,'yyyy-mm-dd')||(to_char(sysdate,'hh24')),'yyyy-mm-dd hh24')

相关文档