oracle总结(三)--单行函数

number 数字类型函数
  ABS(x) 函数,此函数用来返回一个数的绝对值。
  SIN(x)函数,返回X的正弦。x是以弧度表示的角度。
  COS(x)函数,返回x的余弦值。x是以弧度表示的角度。
  TAN(x)函数,返回x的正切。x是以弧度表示的角度。
  ACOS(x)函数,返回X的反余弦值。X范围从1到-1,输入值从0到派,以弧度为单位。
  ASIN(x)函数,返回X的反正弦值。X范围从1到-1,输入值从-PI/2到PI/2,以弧度为单位。
  ATAN(x)函数,返回X的反正切值。输入值从-PI/2到PI/2,以弧度为单位。
  BITAND(x,y)函数,返回X和Y的与结果。X和Y必须为非负整数。注意没有BITOR函数,但是在UTL_RAW包中有用于RAW值的位操作符。
  CEIL(x)函数,用来返回大于或等于X的最小整数。
  COSH(x)函数,返回X的双曲余弦。
  EXP(x)函数,与power(x,y)函数类似,不过不用指明基数,返回E的X次幂。E=2.71828183... 
  FLOOR(x)函数,用来返回小于或等于X的最大整数。
  LN(x)函数,返回x的自然对数。x必须大于0。
  LOG(x,y)函数,返回以X为底Y的对数。底必须是不为0和1的正数,Y是任意正数。
  MOD(被除数,除数)求余函数,如果除数为0,则返回被除数。
  POWER(x,y)函数,返回X的Y次幂。底X和指数Y都不必是正整数,但如果X是负数的话,Y必须是整数。
  ROUND(x[,y])函数,返回舍入到小数点右边Y位的X值。Y缺省为0,这将X舍入为最接近的整数。如果Y是负数,那么舍入到小数点左边相应的位上,Y必须为整数。
  SIGN(x)函数,此函数用来返回一个数的正负值,若为一个正数则返回1,若为一个负数则返回-1,若为0则仍返回0,有点像把模拟量数字化的意思。
  SINH(x)函数,返回x的双曲正弦。
  SQRT(x)函数,返回x的平方根,x不能是负数。
  TANH(x)函数,返回x的双曲正切。

  TRUNC(x[,y])截取值函数,Y缺省为0,这样X被截取成一个整数。如果Y为负数,那么截取到小数点左边相应位置。也可以截取日期,TRUNC(date,[fmt]):

trunc(sysdate,'yyyy') --返回当年第一天.
trunc(sysdate,'mm') --返回当月第一天.
trunc(sysdate,'d') --返回当前星期的第一天.
trunc(sysdate,'dd')--返回当前年月日
trunc(sysdate, 'hh')--返回当前小时
trunc(sysdate, 'mi')--返回当前分钟

  WIDTH_BUCKET(x,min,max,num_buckets) 只能在SQL语句中使用。
使用WIDTH_BUCKET可以根据输入参数创建等长的段。范围MIN到MAX被分为num_buckets
节,每节有相同的大小。返回X所在的那一节。如果X小于MIN,将返回0,如果X大于或等于
MAX,将返回num_buckets+1.MIN和MAX都不能为NULL,num_buckets必须是一个正整数。如
果X是NULL,则返回NULL。


时间类型函数:(date) 
内部存储格式:世纪、年、月、日、小时、分钟、秒 
默认格式是:DD-MON-RR。 
SYSDATE 返回当前的系统时间。 
SELECT SYSDATE FROM DUAL


ADD_MONTHS(date,x)函数,返回加上 X 月后的日期 DATE 的值。X 可以是任意整数。如果结果的月份中所包含的  日分量少于 DATE 的月份的日分量,则返回结果月份的最后 一天。如果不小于,则结果与 DATE的日分量相同。时间分量也相同。 
CURRENT_DATE 以 DATE 类型返回会话时区当前的日期。这个函数同 SYSDATE 相似,除了 SYSDATE不管当会话时区。
CURRENT_TIMESTAMP[(precision)]  以 TIMESTAMP WITH TIMEZONE 类型返回会话时区当前的日期。如果指定 precision,它指返回秒数的精度,缺省为 6。DBTIMEZONE  返回数据库的时区。
LAST_DAY(日期)指定日期所在月份的最后一天的日期,这个函数可用来确定本月还有多少天。
LOCALTIMESTAMP[(precision)]  以 TIMESTAMP 类型返回会话时区的当前日期。如果指定precision,它指返回秒数的精度,缺省为6。
MONTHS_BETWEEN(离当前比较近的日期date1,以前的日期) 两个日期之间相差的月数(以日作为最小单位来计算的)。返回是相差的月数。如果date1和date2 的日分量相 同,或者这两个日期都分别是所在月的最后一天,那么返回结果是个整数。否则,返回结果包含一个分数,以一个月31天计算。 
NEW_TIME(d,zone1,zone2)函数,当时区zone1中的日期和时间是D的时候,返回时区zone2中的日期和时间。返回类型为 DATE。zone1 和 zone2 是字符字符串,另外的时区 可在 ORACLE9I 中 通过查询 V$TIMEZONE_NAMES 得到。 
NEXT_DAY(日期,星期几) 指定日期后将要遇到的后七天的某一天的日期。
ROUND(日期,‘MONTH/YEAR’) 四舍五入得到新的日期。 保留位置是月和年
SESSIONTIMEZONE  返回当前会话的时区。返回类型是一个时区偏移或时区片名的字符字符串。如果指定格式,则与 ALTER SESSION 语句中的格式相同。 
SYS_EXTRACT_UTC(datetime) 从提供的 DATETIME 中以 UTC(CoordinatedUniversal Time)返回时间。DATETIME 必须包含一个时区。 
SYSTIMESTAMP以TIMESTAMP WITH TIMEZONE 返回当前的日期和时间。当在分布式 SQL 语句中使用的时候,返回本地数据库的日期和时间。 
TRUNC(日期,‘MONTH/YEAR’) 截取 
TZ_OFFSET(timezone)  以字符字符串返回提供的 timezone 和 UTC 之间的偏移量。timezone可以被指定为时区名或'+/-HH:HI'格式表示的偏移量。也可使用 SESSIONTIMEZONE 和DBTIMEZONE 函数,返回格式为'+/-HH:HI'。 


日期和日期时间算术 
运算   返回类型 结果
d1-d2  NUMBER
返回 D1 和 D2 之间相差的天数。该值是一个数值,其小数部分代表一天的几分之几。 
dt1-dt2   INTERVAL
返回 DT1 和 DT2 之间的时间间隔。 
i1-i2  INTERVAL
返回 i1 和 i2 之间的差距。 
d1+d2  N/A 
非法——仅能进行两个日期之间的相减。 
dt1+dt2   N/A 
非法——仅能进行两个日期之间的相减。 
i1+i2  INTERVAL 
返回 i1 和 i2 的和。 
d1+n   DATE 
在 D1 上加上 N 天作为 DATE 类型返回。N 可以是实数,它包含一天的几分之几。 
d1-n   DATE 
从 D1 上减去 N 天作为 DATE 类型返回。N 可以是实数,它包含一天的几分之几。 
dt1+i1   DATETIME 
返回 DT1 和 I1 的和。 
dt1-i1   DATETIME 
返回 DT1 和 I1 之间的差距。 
i1*n   INTERVAL 
返回 I1 的 N 次方。 
i1/n   INTERVAL 
返回 I1 除以 N 的值。
 
表中注: 
D1 和 D2 指日期值; 
DT1 和 DT2 指日期时间值; 
I1 和 I2 指时间间隔值; 

N 指数字值。


显示转换

可以用于group by语句进行按年、月、周、日分组
TO_NUMBER(char[,'format_model']) 字符转换到数字类型 
TO_DATE(char[,'format_model']) 字符转换到日期类型 
格式说明符:要与前边要转换的字符串的格式要相同才能转换(匹配问题:格式和位数)。 
TO_CHAR(date[,'format_model'[,nlsparams]]) 
第二个参数可以省略,不指定格式,按系统默认格式输出。 
区分大小写。

格式控制符的类型:
YYYY 四位的年
YEAR 年的拼写
MM 2 位数字的月
MONTH 月的全名
MON 月名的前三个字符

IW周

DY 星期名的前三个字符

DAY 星期名的全称
DD 2 位的天


时间格式控制符: 
HH24:MI:SS AM
HH12:MI:SS PM


通过“”来实现加入特殊字符的格式控制符,将数据库中的时间转换为字符串的一个格式输出方式。fm是format_modual的缩写。
SELECT TO_CHAR(SYSDATE,'FMyyyy"年"mm"月"dd"日"') from dual; 
select TO_CHAR(TO_DATE('5-7-2013 10:15:27','DD-MM-YYYY HH24:MI:SS'),'fmddspth') from dual;
输出为:fifth。


TO_CHAR(NUM)转换数字 
将 NUMBER 类型参数 NUM 转换成 VARCHAR2 类型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值