1. 日期函数 默认格式为 日-月-年
extarct(类型 from 日期 ) --将指定日期抽出指定的部分 类型可以是 year,day,month,hour,minute,second
months_between (日期一,日期二) 得到两个日期中相差的月份
add_months(日期,天数) 指定日期加上指定天数
next_day(日期,星期几) 得到指定日期后面的指定星期几的日期 next_day('23-6月-11','星期一') 得到的是 2011年6月27 因为这天是星期一
last_day(日期) 得到指定日期所在月份的最后一天
emp:
SELECT EXTRACT(YEAR FROM SYSDATE) FROM DUAL; return CurrentYear
SELECT EXTRACT(MONTH FROM SYSDATE) FROM DUAL; return CurrentMonth
SELECT EXTRACT(DAY FROM SYSDATE) FROM DUAL; return CurrentDay
取时分秒
SELECT EXTRACT(HOUR FROM TIMESTAMP '2005-10-10 10:10:10')FROM DUAL;
日期格式转换
select to_char(sysdate,'YYYY"年"MM"月"DD"日" HH24:MI:SS') from dual; //注意年字要用""括起来
2. DECODE()函数
语法
DECODE(值,条件1,结果1,条件2,结果2....) 相当于循环判断
emp:
select decode(u_name,'张三','男人','李四','女人') from user
3. NVL()函数
语法
NVL(列,默认值)
emp:
select NVL(u_name,'无名') from uesrs
4. 字符函数
initcap(值) 首字母大写
lower(值) 转为小写
upper(值) 转为大写
ltrim(值,去除内容) 左剪裁 ltrim('abcdef','abc') == def
rtrim(值,去除内容) 右剪裁
translate(值,替换内容,替换值) translate('tom and joy','ao','12' ) == t2m 1nd j2y
replace(值,替换内容,替换值) 将指定字符串替换成指定字符串 replace('tom and joy','o','mm') == tmmm and jmmy
instr(值,要找的值) 找出指定字符串位置,只找第一个 instr('tom and joy','a') == 5 instr('tom and joy','o') == 2
substr(值,起始位置,取多长) 截取字符串,字符串从1开始 substr('tom and joy',5,3) == and
concat(值1,值2) 连接字符串 concat('i'm ',' superman') == i'm superman
5. 数字函数
round(数字,精度) 四舍五入 round(3.1415,2) == 3.14 round(3.1415,3) == 3.142
round(日期,格式) 对日期进行四舍五入 round(to_date('23-7月-11'),'YEAR') 如果月份大于7 到2012年1月1日 否则就是11年1月1日
if 年>7 年= 年+1
if 月>15 月=月+ 1
if 天%7 ==0 天= 天+3
6. 转换函数
to_char(值,转换类型) 转换成字符串类型 to_char(1234.5,'$9999.9') == $1234.5 to_char(sysdate,'yyyy-mm-dd')
to_date(日期,格式) 将日期转换成指定格式
to_number() 转换成数值
7. 伪列
ROWID : 产生一个新的序列号
select rowid,u_name,u_pwd from users
ROWNUM : 类似于TOP关键字的效果
select * from users where rownum < 10 //返回十条记录