`

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函数大全.doc

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

    Oracle计算时间差常用函数

    主要介绍了Oracle计算时间差常用函数,涉及用法代码及示例,具有一定参考价值。需要的朋友可以了解下。

    oracle日期函数大全

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

    oracle时间函数,如何取得某月的第一天和最后一天

    oracle常用时间函数,取日期差,求下一个星期几,求每月的第一天,求每月的最后一天,年份加减,月份加减等

    oracle 中时间使用

    基础时间日期的获取,平日自己存储的知识点,需要的获取时间断 或者 时间差的时候,用来查询

    Oracle_Database_11g完全参考手册.part2

    附录部分内容丰富、便于参照,包括Oracle命令、关键字、功能以及函数等. 作译者 本书提供作译者介绍  Kevin Loney是Oracle数据库设计、开发、管理和调整方面的国际知名专家。作为金融界的一名企业数据库架构师,...

    oracle返回相差的天数

    用ORACLE实现的返回相差的天数,能够方便的解决日期类型的问题

    MYSQL,SQLSERVER,ORACLE常用的函数

    SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数; SQL&gt; select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual; A A ZERO SPACE --------- --------- --------- --------- ...

    Oracle_Database_11g完全参考手册.part5

    附录部分内容丰富、便于参照,包括Oracle命令、关键字、功能以及函数等. 作译者 本书提供作译者介绍  Kevin Loney是Oracle数据库设计、开发、管理和调整方面的国际知名专家。作为金融界的一名企业数据库架构师,...

    Oracle计算时间差为毫秒的实现代码

    Oracle 中我们知道用 TO_DATE 函数可以进行秒、分、时、天、月、年、周等时间差的计算,但是毫秒却不好计算,TO_DATE 函数只能精确到秒,毫秒则只能用 TO_TIMESTAMP 函数,但是这个函数不像 TO_DATE 这样直接减出来...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...

    Oracle_Database_11g完全参考手册.part3

    附录部分内容丰富、便于参照,包括Oracle命令、关键字、功能以及函数等. 作译者 本书提供作译者介绍  Kevin Loney是Oracle数据库设计、开发、管理和调整方面的国际知名专家。作为金融界的一名企业数据库架构师,...

    Oracle_Database_11g完全参考手册.part4

    附录部分内容丰富、便于参照,包括Oracle命令、关键字、功能以及函数等. 作译者 本书提供作译者介绍  Kevin Loney是Oracle数据库设计、开发、管理和调整方面的国际知名专家。作为金融界的一名企业数据库架构师,...

    racle_Database_11g完全参考手册.part1

    附录部分内容丰富、便于参照,包括Oracle命令、关键字、功能以及函数等. 作译者 本书提供作译者介绍  Kevin Loney是Oracle数据库设计、开发、管理和调整方面的国际知名专家。作为金融界的一名企业数据库架构师,...

    Oracle 10g 开发与管理

    3.日期时间函数 38 4.转换函数 38 第五讲 修改SQL数据与SQL*Plus命令 40 一.添加数据 40 1.Insert Into 表名 [ 字段列表 ] Values (值) 40 2.向表中插入空值 40 3.从其它表中拷贝数据 40 二. 更新数据 41 三. ...

    人大金仓KingbaseES V7参考手册

    就是chm的手册,人大金仓的。手册我经常用,相比比较成熟的oracle、mysql手册差点意思,常用方法可参考,自定义函数什么的,请参考postgresql

    oracle中to_date详细用法示例(oracle日期格式转换)

    主要介绍了oracle中to_date详细用法示例,包括期和字符转换函数用法、字符串和时间互转、求某天是星期几、两个日期间的天数、月份差等用法

    精通SQL 结构化查询语言详解

    7.4.5 CONVERT()函数转换日期、时间 第8章 聚合分析与分组  8.1 聚合分析的基本概念  8.1.1 聚合分析  8.1.2 聚合函数  8.2 聚合函数的应用  8.2.1 求和函数-SUM()  8.2.2 计数函数-COUNT()  8.2.3...

    精通SQL--结构化查询语言详解

    7.4.5 convert()函数转换日期、时间 136 第8章 聚合分析与分组 139 8.1 聚合分析的基本概念 139 8.1.1 聚合分析 139 8.1.2 聚合函数 139 8.2 聚合函数的应用 140 8.2.1 求和函数—sum() 140 8.2.2 计数函数—...

    Linux平台下数据库资源使用情况分析

    SQL语句的性能监控从监控工具来说大致可分为由高级语言提供和由Oracle本身提供,高级语言以典型的应用C语言和WEB开发语言PHP为例, C语言中可以用 gettimeofday 函数来在某一数据库操作之前和之后分别获取一个时间值,...

Global site tag (gtag.js) - Google Analytics