`

oracle 取时间差 Oracle函数大全

 
阅读更多

一.Oracle日期函数

  1、求出本星期的第一天日期(以星期一为第一天)

  select trunc(sysdate,'DD')-to_char(sysdate,'D')+2 from dual;

  2、求出本星期的第七天日期(以星期日为第七天)

  select trunc(sysdate,'DD')-to_char(sysdate,'D')+8 from dual;

  --根据日期格试,取到值到星期几

  select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual;

  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()返回当前会话时区中的当前日期

  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

  7。current_timestamp()以timestamp with time zone数据类型返回当前会话时区中的当前日期

  SQL> select current_timestamp from dual;

  CURRENT_TIMESTAMP

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

  21-6月 -05 10.13.08.220589 上午 +08:00

  8。dbtimezone()返回时区

  SQL> select dbtimezone from dual;

  DBTIME

  ------

  -08:00

  9。extract()找出日期或间隔值的字段值 date_value:=extract(date_field from [datetime_value|interval_value]) SQL> select extract(month from sysdate) "This Month" from dual; This Month ---------- 6 SQL> select extract(year from add_months(sysdate,36)) " Years" from dual; Years ---------- 2008 10。localtimestamp()返回会话中的日期和时间

  SQL> select localtimestamp from dual;

  LOCALTIMESTAMP

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

  21-6月 -05 10.18.15.855652 上午

  常用日期数据格式(该段为摘抄)

  Y或YY或YYY 年的最后一位,两位或三位 Select to_char(sysdate,’YYY’) from dual; 002表示2002年

  SYEAR或YEAR SYEAR使公元前的年份前加一负号 Select to_char(sysdate,’SYEAR’) from dual; -1112表示公元前111 2年

  Q 季度,1~3月为第一季度 Select to_char(sysdate,’Q’) from dual; 2表示第二季度①

  MM 月份数 Select to_char(sysdate,’MM’) from dual; 12表示12月

  RM 月份的罗马表示 Select to_char(sysdate,’RM’) from dual; IV表示4月

  Month 用9个字符长度表示的月份名 Select to_char(sysdate,’Month’) from dual; May后跟6个空格表示5月

  WW 当年第几周 Select to_char(sysdate,’WW’) from dual; 24表示2002年6月13日为第24周

  W 本月第几周 Select to_char(sysdate,’W’) from dual; 2002年10月1日为第1周

  DDD 当年第几, 1月1日为001,2月1日为032 Select to_char(sysdate,’DDD’) from dual; 363 2002年1 2月2 9日为第363天

  DD 当月第几天 Select to_char(sysdate,’DD’) from dual; 04 10月4日为第4天

  D 周内第几天 Select to_char(sysdate,’D’) from dual; 5 2002年3月14日为星期一

  DY 周内第几天缩写 Select to_char(sysdate,’DY’) from dual; SUN 2002年3月24日为星期天

  HH或HH12 12进制小时数 Select to_char(sysdate,’HH’) from dual; 02 午夜2点过8分为02

  HH24 24小时制 Select to_char(sysdate,’HH24’) from dual; 14 下午2点08分为14

  MI 分钟数(0~59) Select to_char(sysdate,’MI’) from dual; 17下午4点17分

  SS 秒数(0~59) Select to_char(sysdate,’SS’) from dual; 22 11点3分22秒

  提示注意不要将MM格式用于分钟(分钟应该使用MI)。MM是用于月份的格式,将它用于分钟也能工作,但结果是错误的。

  现在给出一些实践后的用法:

  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-M M-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-MM-DD') from ( select trunc(sysdate, 'MM')+rownum-1 as d from dba_objects where rownum < 32) t where to_char(t.d, 'MM') = to_char(sysdate, 'MM') --找出当前月份的周五的日期

  and trim(to_char(t.d, 'Day')) = '星期五'

  --------

  03-05-02

  03-05-09

  03-05-16

  03-05-23

  03-05-30

  如果把where to_char(t.d, 'MM') = to_char(sysdate, 'MM')改成sysdate-90,即为查找当前月份的前三个月中的每周五的日期。

  9.oracle中时间运算

  内容如下:

  1、oracle支持对日期进行运算

  2、日期运算时是以天为单位进行的

  3、当需要以分秒等更小的单位算值时,按时间进制进行转换即可

  4、进行时间进制转换时注意加括号,否则会出问题

  SQL> alter session set nls_date_format='yyyy-mm-dd hh:mi:ss';

  会话已更改。

  SQL> set serverout on

  SQL> declare

  2 DateValue date;

  3 begin

  4 select sysdate into DateValue from dual;

  5 dbms_output.put_line('源时间:'||to_char(DateValue));

  6 dbms_output.put_line('源时间减1天:'||to_char(DateValue-1));

  7 dbms_output.put_line('源时间减1天1小时:'||to_char(DateValue-1-1/24));

  8 dbms_output.put_line('源时间减1天1小时1分:'||to_char(DateValue-1-1/24-1/(24*60)));

  9 dbms_output.put_line('源时间减1天1小时1分1秒:'||to_char(DateValue-1-1/24-1/(24*60)-1/(24*60*60 )));

  10 end;

  11 /

  源时间:2003-12-29 11:53:41

  源时间减1天:2003-12-28 11:53:41

  源时间减1天1小时:2003-12-28 10:53:41

  源时间减1天1小时1分:2003-12-28 10:52:41

  源时间减1天1小时1分1秒:2003-12-28 10:52:40

  PL/SQL 过程已成功完成。

  在Oracle中实现时间相加处理

  -- 名称:Add_Times

  -- 功能:返回d1与NewTime相加以后的结果,实现时间的相加

  -- 说明:对于NewTime中的日期不予考虑

  -- 日期:2004-12-07

  -- 版本:1.0

  -- 作者:Kevin

  create or replace function Add_Times(d1 in date,NewTime in date) return date

  is

  hh number;

  mm number;

  ss number;

  hours number;

  dResult date;

  begin

  -- 下面依次取出时、分、秒

  select to_number(to_char(NewTime,'HH24')) into hh from dual;

  select to_number(to_char(NewTime,'MI')) into mm from dual;

  select to_number(to_char(NewTime,'SS')) into ss from dual;

  -- 换算出NewTime中小时总和,在一天的百分几

  hours := (hh + (mm / 60) + (ss / 3600))/ 24;

  -- 得出时间相加后的结果

  select d1 + hours into dResult from dual;

  return(dResult);

  end Add_Times;

  -- 测试用例 -- select Add_Times(sysdate,to_date('2004-12-06 03:23:00','YYYY-MM-DD HH24:MI:SS')) from dual 在Oracle9i中计算时间差

  计算时间差Oracle DATA数据类型的一个常见问题。Oracle支持日期计算,你可以创建诸如“日期1-日期2”这样的表达式来计算这两个日期之间的时间差

  一旦你发现了时间差异,你可以使用简单的技巧来以天、小时、分钟或者秒为单位来计算时间差。为了得到数据差,你必须选择合适的时间度量单位,这样就可以进行数据格式隐藏。

  使用完善复杂的转换函数来转换日期是一个诱惑,但是你会发现这不是最好的解决方法。

  round(to_number(end-date-start_date))- 消逝的时间(以天为单位)

  round(to_number(end-date-start_date)*24)- 消逝的时间(以小时为单位)

  round(to_number(end-date-start_date)*1440)- 消逝的时间(以分钟为单位)

  显示时间差的默认模式是什么?为了找到这个问题的答案,让我们进行一个简单的SQL *Plus查询。

  SQL> select sysdate-(sysdate-3) from dual;

  SYSDATE-(SYSDATE-3)

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

  3

  这里,我们看到了Oracle使用天来作为消逝时间的单位,所以我们可以很容易的使用转换函数来把它转换成小时或者分钟。然而,当分钟数不是一个整数时,我们就会遇到放置小数点的问题。

  Select

  (sysdate-(sysdate-3.111))*1440

  from

  dual;

  (SYSDATE-(SYSDATE-3.111))*1440

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

  4479.83333

  当然,我们可以用ROUND函数(即取整函数)来解决这个问题,但是要记住我们必须首先把DATE数据类型转换成NUMBER数据类型。

  Select

  round(to_number(sysdate-(sysdate-3.111))*1440)

  from

  dual;

  ROUND(TO_NUMBER(SYSDATE-(SYSDATE-3.111))*1440)

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

  4480

  我们可以用这些函数把一个消逝时间近似转换成分钟并把这个值写入Oracle表格中。在这个例子里,我们有一个离线(logoff)系统级触发机制来计算已经开始的会话时间并把它放入一个Oracle STATSPACK USER_LOG扩展表格之中。

  Update

  perfstat.stats$user_log

  set

  elapsed_minutes =

  round(to_number(logoff_time-logon_time)*1440)

  where

  user = user_id

  and

  elapsed_minutes is NULL;

  查出任一年月所含的工作日

  CREATE OR REPLACE FUNCTION Get_WorkingDays(

  ny IN VARCHAR2

  ) RETURN INTEGER IS

  /*------------------------------------------------ ------------------------------------------

  函数名称:Get_WorkingDays 中文名称:求某一年月中共有多少工作日

  作者姓名: XINGPING 编写时间: 2004-05-22

  输入参数:NY:所求包含工作日数的年月,格式为yyyymm,如200405

  返回 值:整型值,包含的工作日数目。

  算法描述:

  1).列举出参数给出的年月中的每一天。这里使用了一个表(ljrq是我的库中的一张表。这个表可以是有权访问的、记录条数至少为31的任意一张表或视图)来构造出某年月的每一天。

  2).用这些日期和一个已知星期几的日期相减(2001-12-30是星期天),所得的差再对7求模。如果所求年月在2001-12-30以前, 那么所得的差既是负数,求模后所得值范围为大于-6,小于0,如-1表示星期六,故先将求模的结果加7,再求7的模.

  3).过滤掉结果集中值为0和6的元素,然后求count,所得即为工作日数目。

  -------------------------------------------------- -----------------------------------------------*/

  Result INTEGER;

  BEGIN

  SELECT COUNT(*) INTO Result

  FROM (SELECT MOD(MOD(q.rq-to_date('2001-12-30','yyyy-mm-dd'),7) ,7) weekday

  FROM ( SELECT to_date(ny||t.dd,'yyyymmdd') rq

  FROM (SELECT substr(100+ROWNUM,2,2) dd

  FROM ljrq z WHERE Rownum<=31

  ) t

  WHERE to_date(ny||t.dd,'yyyymmdd')

  BETWEEN to_date(ny,'yyyymm')

  AND last_day(to_date(ny,'yyyymm'))

  )q

  ) a

  WHERE a.weekday NOT IN(0,6);

  RETURN Result;

  END Get_WorkingDays;

  ______________________________________

  还有一个版本

  CREATE OR REPLACE FUNCTION Get_WorkingDays(

  ny IN VARCHAR2

  ) RETURN INTEGER IS

  二Oracle 常用函数

  1.ASCII

  返回与指定的字符对应的十进制数;

  SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual;

  A A ZERO SPACE

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

  65 97 48 32

  2.CHR

  给出整数,返回对应的字符;

  SQL> select chr(54740) zhao,chr(65) chr65 from dual;

  ZH C

  -- -

  赵 A

  3.CONCAT

  连接两个字符串;

  SQL> select concat('010-','88888888')||'转23' 高乾竞电话 from dual;

  高乾竞电话

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

  010-88888888转23

  4.INITCAP

  返回字符串并将字符串的第一个字母变为大写;

  SQL> select initcap('smith') upp from dual;

  UPP

  -----

  Smith

  5.INSTR(C1,C2,I,J)

  在一个字符串中搜索指定的字符,返回发现指定的字符的位置;

  C1 被搜索的字符串

  C2 希望搜索的字符串

  I 搜索的开始位置,默认为1 J 出现的位置,默认为1

  SQL> select instr('oracle traning','ra',1,2) instring from dual;

  INSTRING

  ---------

  9

  6.LENGTH

  返回字符串的长度;

  SQL> select name,length(name),addr,length(addr),sal,length(to_ char(sal)) from .nchar_tst;

  NAME LENGTH(NAME) ADDR LENGTH(ADDR) SAL LENGTH(TO_CHAR(SAL))

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

  高乾竞 3 北京市海锭区 6 9999.99 7

  7.LOWER

  返回字符串,并将所有的字符小写

  SQL> select lower('AaBbCcDd')AaBbCcDd from dual;

  AABBCCDD

  --------

  aabbccdd

  8.UPPER

  返回字符串,并将所有的字符大写

  SQL> select upper('AaBbCcDd') upper from dual;

  UPPER

  --------

  AABBCCDD

  9.RPAD和LPAD(粘贴字符)

  RPAD 在列的右边粘贴字符

  LPAD 在列的左边粘贴字符

  SQL> select lpad(rpad('gao',10,'*'),17,'*')from dual;

  LPAD(RPAD('GAO',1

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

  *******gao*******

  不够字符则用*来填满

  10.LTRIM和RTRIM

  LTRIM 删除左边出现的字符串

  RTRIM 删除右边出现的字符串

  SQL> select ltrim(rtrim(' gao qian jing ',' '),' ') from dual;

  LTRIM(RTRIM('

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

  gao qian jing

  11.SUBSTR(string,start,count)

  取子字符串,从start开始,取count个

  SQL> select substr('13088888888',3,8) from dual;

  SUBSTR('

  --------

  08888888

  12.REPLACE('string','s1','s2')

  string 希望被替换的字符或变量

  s1 被替换的字符串

  s2 要替换的字符串

  SQL> select replace('he love you','he','i') from dual;

  REPLACE('HELOVEYOU','HE','I')

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

  i love you

  13.SOUNDEX

  返回一个与给定的字符串读音相同的字符串

  SQL> create table table1(xm varchar(8));

  SQL> insert into table1 values('weather');

  SQL> insert into table1 values('wether');

  SQL> insert into table1 values('gao');

  SQL> select xm from table1 where soundex(xm)=soundex('weather'); XM -------- weather wether 14.TRIM('s' from 'string') LEADING 剪掉前面的字符

  TRAILING 剪掉后面的字符

  如果不指定,默认为空格符

  15.ABS

  返回指定值的绝对值

  SQL> select abs(100),abs(-100) from dual;

  ABS(100) ABS(-100)

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

  100 100

  16.ACOS

  给出反余弦的值

  SQL> select acos(-1) from dual;

  ACOS(-1)

  ---------

  3.1415927

  17.ASIN

  给出反正弦的值

  SQL> select asin(0.5) from dual;

  ASIN(0.5)

  ---------

  .52359878

  18.ATAN

  返回一个数字的反正切值

  SQL> select atan(1) from dual;

  ATAN(1)

  ---------

  .78539816

  19.CEIL

  返回大于或等于给出数字的最小整数

  SQL> select ceil(3.1415927) from dual;

  CEIL(3.1415927)

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

  4

  20.COS

  返回一个给定数字的余弦

  SQL> select cos(-3.1415927) from dual;

  COS(-3.1415927)

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

  -1

  21.COSH

  返回一个数字反余弦值

  SQL> select cosh(20) from dual;

  COSH(20)

  ---------

  242582598

  22.EXP

  返回一个数字e的n次方根

  SQL> select exp(2),exp(1) from dual;

  EXP(2) EXP(1)

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

  7.3890561 2.7182818

  23.FLOOR

  对给定的数字取整数

  SQL> select floor(2345.67) from dual;

  FLOOR(2345.67)

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

  2345

  24.LN

  返回一个数字的对数值

  SQL> select ln(1),ln(2),ln(2.7182818) from dual;

  LN(1) LN(2) LN(2.7182818) --------- --------- ------------- 0 .69314718 .99999999 25.LOG(n1,n2) 返回一个以n1为底n2的对数

  SQL> select log(2,1),log(2,4) from dual;

  LOG(2,1) LOG(2,4)

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

  0 2

  26.MOD(n1,n2)

  返回一个n1除以n2的余数

  SQL> select mod(10,3),mod(3,3),mod(2,3) from dual;

  MOD(10,3) MOD(3,3) MOD(2,3)

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

  1 0 2

  27.POWER

  返回n1的n2次方根

  SQL> select power(2,10),power(3,3) from dual;

  POWER(2,10) POWER(3,3)

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

  1024 27

  28.ROUND和TRUNC

  按照指定的精度进行舍入

  SQL> select round(55.5),round(-55.4),trunc(55.5),trunc(-55.5) from dual;

  ROUND(55.5) ROUND(-55.4) TRUNC(55.5) TRUNC(-55.5)

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

  56 -55 55 -55

  29.SIGN

  取数字n的符号,大于0返回1,小于0返回-1,等于0返回0

  SQL> select sign(123),sign(-100),sign(0) from dual;

  SIGN(123) SIGN(-100) SIGN(0)

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

  1 -1 0

  30.SIN

  返回一个数字的正弦值

  SQL> select sin(1.57079) from dual;

  SIN(1.57079)

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

  1

  31.SIGH

  返回双曲正弦的值

  SQL> select sin(20),sinh(20) from dual;

  SIN(20) SINH(20)

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

  .91294525 242582598

  32.SQRT

  返回数字n的根

  SQL> select sqrt(64),sqrt(10) from dual;

  SQRT(64) SQRT(10)

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

  8 3.1622777

  33.TAN

  返回数字的正切值

  SQL> select tan(20),tan(10) from dual;

  TAN(20) TAN(10)

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

  2.2371609 .64836083

  34.TANH

  返回数字n的双曲正切值

  SQL> select tanh(20),tan(20) from dual;

  TANH(20) TAN(20)

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

  1 2.2371609

  35.TRUNC 按照指定的精度截取一个数

  SQL> select trunc(124.1666,-2) trunc1,trunc(124.16666,2) from dual;

  TRUNC1 TRUNC(124.16666,2)

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

  100 124.16

  36.ADD_MONTHS

  增加或减去月份

  SQL> select to_char(add_months(to_date('199912','yyyymm'),2),' yyyymm') from dual;

  TO_CHA

  ------

  200002

  SQL> select to_char(add_months(to_date('199912','yyyymm'),-2), 'yyyymm') from dual;

  TO_CHA

  ------

  199910

  37.LAST_DAY

  返回日期的最后一天

  SQL> select to_char(sysdate,'yyyy.mm.dd'),to_char((sysdate)+1, 'yyyy.mm.dd') from dual;

  TO_CHAR(SY TO_CHAR((S

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

  2004.05.09 2004.05.10

  SQL> select last_day(sysdate) from dual;

  LAST_DAY(S

  ----------

  31-5月 -04

  38.MONTHS_BETWEEN(date2,date1)

  给出date2-date1的月份

  SQL> select months_between('19-12月-1999','19-3月-1999') mon_between from dual;

  MON_BETWEEN

  -----------

  9

  SQL>selectmonths_between(to_date('2000.05.20','yyyy .mm.dd'),to_date('2005.05.20','yyyy.dd')) mon_betw from dual;

  MON_BETW

  ---------

  -60

  39.NEW_TIME(date,'this','that')

  给出在this时区=other时区的日期和时间

  SQL> select to_char(sysdate,'yyyy.mm.dd hh24:mi:ss') bj_time,to_char(new_time

  2 (sysdate,'PDT','GMT'),'yyyy.mm.dd hh24:mi:ss') los_angles from dual;

  BJ_TIME LOS_ANGLES

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

  2004.05.09 11:05:32 2004.05.09 18:05:32

  40.NEXT_DAY(date,'day')

  给出日期date和星期x之后计算下一个星期的日期

  SQL> select next_day('18-5月-2001','星期五') next_day from dual;

  NEXT_DAY

  ----------

  25-5月 -01

  41.SYSDATE

  用来得到系统的当前日期

  SQL> select to_char(sysdate,'dd-mm-yyyy day') from dual;

  TO_CHAR(SYSDATE,'

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

  09-05-2004 星期日

  trunc(date,fmt)按照给出的要求将日期截断,如果fmt='mi'表示保留分,截断秒

  SQL> select to_char(trunc(sysdate,'hh'),'yyyy.mm.dd hh24:mi:ss') hh,

  2 to_char(trunc(sysdate,'mi'),'yyyy.mm.dd hh24:mi:ss') hhmm from dual;

  HH HHMM

  ------------------- ------------------- 2004.05.09 11:00:00 2004.05.09 11:17:00 42.CHARTOROWID 将字符数据类型转换为ROWID类型

  SQL> select rowid,rowidtochar(rowid),ename from scott.emp;

  ROWID ROWIDTOCHAR(ROWID) ENAME

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

  AAAAfKAACAAAAEqAAA AAAAfKAACAAAAEqAAA SMITH

  AAAAfKAACAAAAEqAAB AAAAfKAACAAAAEqAAB ALLEN

  AAAAfKAACAAAAEqAAC AAAAfKAACAAAAEqAAC WARD

  AAAAfKAACAAAAEqAAD AAAAfKAACAAAAEqAAD JONES

  43.CONVERT(c,dset,sset)

  将源字符串 sset从一个语言字符集转换到另一个目的dset字符集

  SQL> select convert('strutz','we8hp','f7dec') "conversion" from dual;

  conver

  ------

  strutz

  44.HEXTORAW

  将一个十六进制构成的字符串转换为二进制

  45.RAWTOHEXT

  将一个二进制构成的字符串转换为十六进制

  46.ROWIDTOCHAR

  将ROWID数据类型转换为字符类型

  47.TO_CHAR(date,'format')

  SQL> select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') from dual;

  TO_CHAR(SYSDATE,'YY

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

  2004/05/09 21:14:41

  48.TO_DATE(string,'format')

  将字符串转化为ORACLE中的一个日期

  49.TO_MULTI_BYTE

  将字符串中的单字节字符转化为多字节字符

  SQL> select to_multi_byte('高') from dual;

  TO

  --

  高

  50.TO_NUMBER

  将给出的字符转换为数字

  SQL> select to_number('1999') year from dual;

  YEAR

  ---------

  1999

  51.BFILENAME(dir,file)

  指定一个外部二进制文件

  SQL>insert into file_tb1 values(bfilename('lob_dir1','image1.gif'));

  52.CONVERT('x','desc','source')

  将x字段或变量的源source转换为desc

  SQL> select sid,serial#,username,decode(command,

  2 0,'none',

  3 2,'insert',

  4 3,

  5 'select',

  6 6,'update',

  7 7,'delete',

  8 8,'drop',

  9 'other') cmd from v$session where type!='background';

  SID SERIAL# USERNAME CMD

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

  1 1 none

  2 1 none

  3 1 none

  4 1 none 5 1 none 6 1 none 7 1275 none 8 1275 none 9 20 GAO select 10 40 GAO none 53.DUMP(s,fmt,start,length) DUMP函数以fmt指定的内部数字格式返回一个VARCHAR2类型的值

  SQL> col global_name for a30

  SQL> col dump_string for a50

  SQL> set lin 200

  SQL> select global_name,dump(global_name,1017,8,5) dump_string from global_name;

  GLOBAL_NAME DUMP_STRING

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

  ORACLE.WORLD Typ=1 Len=12 CharacterSet=ZHS16GBK: W,O,R,L,D

  54.EMPTY_BLOB()和EMPTY_CLOB()

  这两个函数都是用来对大数据类型字段进行初始化操作的函数

  55.GREATEST

  返回一组表达式中的最大值,即比较字符的编码大小.

  SQL> select greatest('AA','AB','AC') from dual;

  GR

  --

  AC

  SQL> select greatest('啊','安','天') from dual;

  GR

  --

  天

  56.LEAST

  返回一组表达式中的最小值

  SQL> select least('啊','安','天') from dual;

  LE

  --

  啊

  57.UID

  返回标识当前用户的唯一整数

  SQL> show user

  USER 为"GAO"

  SQL> select username,user_id from dba_users where user_id=uid;

  USERNAME USER_ID

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

  GAO 25

  58.USER

  返回当前用户的名字

  SQL> select user from dual;

  USER

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

  GAO

  59.USEREVN

  返回当前用户环境的信息,opt可以是:

  ENTRYID,SESSIONID,TERMINAL,ISDBA,LABLE,LANGUAGE,CL IENT_INFO,LANG,VSIZE

  ISDBA 查看当前用户是否是DBA如果是则返回true

  SQL> select userenv('isdba') from dual;

  USEREN

  ------

  FALSE

  SQL> select userenv('isdba') from dual;

  USEREN

  ------

  TRUE

  SESSION

  返回会话标志

  SQL> select userenv('sessionid') from dual;

  USERENV('SESSIONID')

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

  152

  ENTRYID

  返回会话人口标志 SQL> select userenv('entryid') from dual; USERENV('ENTRYID') ------------------ 0 INSTANCE 返回当前INSTANCE的标志

  SQL> select userenv('instance') from dual;

  USERENV('INSTANCE')

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

  1

  LANGUAGE

  返回当前环境变量

  SQL> select userenv('language') from dual;

  USERENV('LANGUAGE')

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

  SIMPLIFIED CHINESE_CHINA.ZHS16GBK

  LANG

  返回当前环境的语言的缩写

  SQL> select userenv('lang') from dual;

  USERENV('LANG')

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

  ZHS

  TERMINAL

  返回用户的终端或机器的标志

  SQL> select userenv('terminal') from dual;

  USERENV('TERMINA

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

  GAO

  VSIZE(X)

  返回X的大小(字节)数

  SQL> select vsize(user),user from dual;

  VSIZE(USER) USER

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

  6 SYSTEM

  60.AVG(DISTINCT|ALL)

  all表示对所有的值求平均值,distinct只对不同的值求平均值

  SQLWKS> create table table3(xm varchar(8),sal number(7,2));

  语句已处理。

  SQLWKS> insert into table3 values('gao',1111.11);

  SQLWKS> insert into table3 values('gao',1111.11);

  SQLWKS> insert into table3 values('zhu',5555.55);

  SQLWKS> commit;

  SQL> select avg(distinct sal) from gao.table3;

  AVG(DISTINCTSAL)

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

  3333.33

  SQL> select avg(all sal) from gao.table3;

  AVG(ALLSAL)

  -----------

  2592.59

  61.MAX(DISTINCT|ALL)

  求最大值,ALL表示对所有的值求最大值,DISTINCT表示对不同的值求最大值,相同的只取一次

  SQL> select max(distinct sal) from scott.emp;

  MAX(DISTINCTSAL)

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

  5000

  62.MIN(DISTINCT|ALL)

  求最小值,ALL表示对所有的值求最小值,DISTINCT表示对不同的值求最小值,相同的只取一次

  SQL> select min(all sal) from gao.table3;

  MIN(ALLSAL)

  -----------

  1111.11

  63.STDDEV(distinct|all)

  求标准差,ALL表示对所有的值求标准差,DISTINCT表示只对不同的值求标准差

  SQL> select stddev(sal) from scott.emp; STDDEV(SAL) ----------- 1182.5032 SQL> select stddev(distinct sal) from scott.emp; STDDEV(DISTINCTSAL) ------------------- 1229.951 64.VARIANCE(DISTINCT|ALL) 求协方差

  SQL> select variance(sal) from scott.emp;

  VARIANCE(SAL)

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

  1398313.9

  65.GROUP BY

  主要用来对一组数进行统计

  SQL> select deptno,count(*),sum(sal) from scott.emp group by deptno;

  DEPTNO COUNT(*) SUM(SAL)

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

  10 3 8750

  20 5 10875

  30 6 9400

  66.HAVING

  对分组统计再加限制条件

  SQL> select deptno,count(*),sum(sal) from scott.emp group by deptno having nt(*)>=5;

  DEPTNO COUNT(*) SUM(SAL)

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

  20 5 10875

  30 6 9400

  SQL> select deptno,count(*),sum(sal) from scott.emp having count(*)>=5 group by tno ;

  DEPTNO COUNT(*) SUM(SAL)

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

  20 5 10875

  30 6 9400

  67.ORDER BY

  用于对查询到的结果进行排序输出

  SQL> select deptno,ename,sal from scott.emp order by deptno,sal desc;

  DEPTNO ENAME SAL

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

  10 KING 5000

  10 CLARK 2450

  10 MILLER 1300

  20 SCOTT 3000

  20 FORD 3000

  20 JONES 2975

  20 ADAMS 1100

  20 SMITH 800

  30 BLAKE 2850

  30 ALLEN 1600

  30 TURNER 1500

  30 WARD 1250

  30 MARTIN 1250

  30 JAMES 950 很抱歉,因为您在网易相册发布了违规信息,账号被屏蔽。被屏蔽期间他人无法访问您的相册。

  去帮助中心,了解如何重新恢复服务。

分享到:
评论

相关推荐

    oracle系统内置函数大全

    以上是对Oracle系统内置函数大全的知识点介绍,内容涵盖了字符处理、数字计算、日期处理、数据类型转换、分组聚合等多个方面的函数。Oracle数据库管理员和开发人员经常需要用到这些函数以实现各种数据处理需求。

    oracle内置函数大全

    这篇文档“oracle内置函数大全”提供了一个全面的参考,适合数据库管理员、开发人员以及初学者使用。下面将详细介绍Oracle的一些核心内置函数,以帮助你更好地理解和应用它们。 1. 数学函数: - `ABS()`:返回一个...

    Oracle函数大全.pdf

    - **时间转换和处理**: 包括求两个日期之间天数、月份差、处理时间格式冲突、计算日期列表中的最晚日期、计算时间差、查找月的第一天和最后一天等。 - **Next_day**: 查找指定日期后的第一个指定星期的日期。 - **...

    ORACLE函数大全

    这里,我们将深入探讨"ORACLE函数大全"中包含的主要类别,包括字符串操作、日期处理以及统计计算。 一、字符串操作函数 1. CONCAT():用于连接两个或多个字符串,例如CONCAT('Hello', ' ', 'World')将返回'Hello ...

    Oracle中实现datadiff函数

    然而,在Oracle中我们可以通过自定义函数的方式实现类似的功能,即计算两个日期之间的时间差。 #### 实现方法 为了在Oracle中模拟`DATEDIFF`功能,我们可以创建一个用户定义的函数。下面将详细介绍如何创建和使用...

    oracle分析函数大全

    ### Oracle分析函数详解 #### 一、概述 Oracle分析函数是一种强大的工具,它自Oracle 8.1.6版本开始引入,并在后续版本中不断完善和发展。这类函数的主要用途在于能够针对一组数据执行复杂的聚合计算,并且不同于...

    oracle函数大全.doc

    ORACLE函数大全 ________________________________________ 作者:[本站编辑] 来源:[CSDN] 浏览:[ ] SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数; SQL&gt; select ascii('A') A,ascii('a') a,...

    oracle函数大全及存储过程语法

    本文将深入探讨"Oracle函数大全及存储过程语法"这一主题,帮助你提升在数据库管理、开发和优化方面的技能。 一、Oracle函数大全 1. 数学函数: - `ABS()`:返回一个数的绝对值。 - `MOD()`:返回两个数相除后的...

    oracle10g函数大全

    Oracle 10g是一款历史悠久但仍然广泛使用的数据库管理系统。...通过《oracle·10G函数大全.chw》和《oracle·10G函数大全.chm》文档,你可以深入学习和查阅Oracle 10g的各类函数,更好地掌握数据库管理技能。

    ORACLE内部函数大全以及与SQLSERVER的区别

    Oracle 和 SQL Server 都是广泛使用的数据库管理系统,它们在处理数据时使用了各种内置函数来实现不同的操作。这里我们将详细探讨 Oracle 内部函数及其与 SQL Server 的等价函数,以便于理解两者之间的差异。 1. **...

    oracle日期函数大全

    ORACLE日期时间函数大全:日期和字符转换函数用法(to_date,to_char),两个日期间的天数,月份差,日期格式冲突问题

    Oracle计算时间差常用函数

    Oracle数据库系统在处理日期和时间数据时提供了丰富的函数,这些函数对于计算时间差至关重要。在Oracle中,Date类型的字段可以用来存储日期和时间信息。本文将详细介绍如何使用Oracle的内置函数来计算两个Date类型...

    Oracle常见函数集锦

    本篇文章将深入探讨“Oracle常见函数集锦”,主要关注在SQL查询中常用的Oracle函数,这些函数对于数据分析师、数据库管理员以及开发人员来说至关重要。 1. **字符串函数** - `CONCAT()`:用于连接两个或多个字符串...

    ORACLE函数大全汇总详解(20100915补充修订版)

    ### ORACLE函数大全汇总详解 #### 一、概述 Oracle数据库是业界领先的数据库管理系统之一,提供了丰富的内置函数来处理各种数据类型与业务需求。本文档将详细介绍一系列Oracle函数及其应用场景,帮助用户更好地...

    oracle时间函数

    Oracle时间函数是数据库管理中非常关键的一部分,特别是在处理与日期和时间相关的数据时。在Oracle数据库中,时间函数允许我们进行各种操作,如获取当前日期和时间、计算日期之间的差异、调整日期以及按特定周期对...

    Oracle常用函数.pdf

    ### Oracle常用函数详解 #### 一、概述 Oracle 数据库提供了丰富的内置函数,极大地提高了 SQL 语句在处理数据时的灵活性与效率。这些函数主要分为两大类:单行函数和多行函数(也称为聚合函数)。单行函数通常...

    oracle基本函数

    Oracle提供了多种处理日期和时间的函数,例如: - `SYSDATE`:返回当前系统的日期和时间。 - `ADD_MONTHS(date, months)`:在日期上增加指定的月数。 - `MONTHS_BETWEEN(date1, date2)`:计算两个日期之间的月数...

    sql查询oracle时间段操作

    在"查询oracle时间段操作.txt"文件中,可能包含了具体的SQL查询示例、快照创建步骤和闪回功能的使用指南,以及关于如何有效利用这些工具进行数据恢复和分析的详细说明。阅读这份文件将进一步加深你对Oracle时间段...

    oracle时间差表达式

    ### Oracle时间差表达式详解 在Oracle数据库中,计算两个日期之间的时间差是一个常见的需求,尤其是在处理业务逻辑或数据报告时。本篇文章将详细介绍如何利用Oracle内置函数来精确计算两个日期之间的差值,并且能够...

Global site tag (gtag.js) - Google Analytics