一:日期函数
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
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
--add_months:当前月份加上2月
select add_months(sysdate,2) from dual;
--MONTHS_BETWEEN:指定日期和当前日期相差月份
Select MONTHS_BETWEEN(DATE'2015-05-01',sysdate) from dual;
--last_day:返回某个月的最后一天
select last_day(sysdate) from dual;
--next_day:返回指定日期的下一个星期日期
select next_day(sysdate,'星期日') from dual;
--EXTRACT:截取时间值函数
select extract(year from date'2011-01-03') year from dual;
select extract(MONTH from date'2011-01-03') year from dual;
select extract(day from date'2011-01-03') year from dual;
trunc(d1,c1) : 返回日期d1所在期间(参数c1)的第一天日期
d1日期型,c1为字符型(参数),c1默认为j(即当前日期)
本周星期日:day或dy或d (每周顺序:日,一,二,三,四,五,六)
本月初日期:month或mon或mm或rm
本季日期:q
本年初日期:syear或year或yyyy或yyy或yy或y(多个y表示精度)
本世纪初日期:cc或scc
SELECT TRUNC(Sysdate) FROM dual; --显示格式2016/5/9
select trunc(sysdate ,'DD') from dual; --今天日期
select trunc(sysdate,'d')+7 from dual; --本周星期日
select trunc(sysdate,'dy')+7 from dual; --本周星期日
select trunc(sysdate,'day')+7 from dual; --本周星期日
select trunc(sysdate,'q') from dual;--本季开始日期
select trunc(sysdate,'month') from dual; --本月开始日期
select trunc(sysdate ,'mm') from dual; --本月开始日期
select trunc(sysdate,'year') from dual; --本年开始日期
select trunc(sysdate ,'yyyy') from dual; --本年开始日期
select trunc(sysdate ,'HH24') from dual; --本小时开始时间
select trunc(sysdate ,'MI') from dual; --本分钟开始时间
select trunc(sysdate ,'CC') from dual; --本世纪开始时间
select trunc(LAST_DAY(sysdate),'dd') from dual; --本月最后一天
round(10.2356,2):函数可以对数字按指定保留小数位数四舍五入,这个函数还可以对日期四舍五入
select round(sysdate,'yyyy') from dual 四舍五入到年
select round(sysdate,'mm') from dual 四舍五入到月
select round(sysdate,'dd') from dual 四舍五入到日
select round(sysdate,'hh') from dual 四舍五入到小时
select round(sysdate,'mi') from dual 四舍五入到分钟
二:数字函数
--取整函数(ceil 向上取整,floor 向下取整)
select ceil(66.6) N1,floor(66.6) N2 from dual;
--取幂(power) 和 求平方根(sqrt)
select power(3,2) N1,sqrt(9) N2 from dual;
--求余数
select mod(7,5) from dual;
--返回固定小数位数 (round:四舍五入,trunc:直接截断)
select round(66.667,2) N1,trunc(66.667,2) N2 from dual;
--数字格式化
select to_char(12345.123,'99999999.9900') from dual;--结果为12345.1230
select to_char(0.123,'99999999.9900') from dual;--结果为 .123
select to_char(0.123,'99999990.9900') from dual;--结果为 0.123
--返回值的符号(正数返回为1,负数为-1)
select sign(-32),sign(293),sign(0) from dual;
三:字符函数
--initcap:首字符大写
Select initcap(‘hello’) from dual;--显示Hello
--lower:将字符串转化为小写的格式
Select lower('KEVIN') from dual; --显示kevin
--upper:将字符串转化为大写的格式
Select lower('kevin') from dual; --显示KEVIN
--length(char):返回字符串的长度。
SELECT length('KEVIN') FROM dual;--显示5
--REPLACE、translate:字符串替换
select translate('adc-efg','adc','efg') from dual; --显示:efg-efg
select REPLACE('adc-efg','adc','efg') from dual; --显示:efg-efg
--substr(char, m, n):截取字符串的子串,n代表取n个字符的意思,不是代表取到第n个
select substr('abcdefg',3,2) from dual; --显示cd
--字符串拼接
select concat('ke','vin'),'ke'||'vin' from dual;
四: 转换函数
- TO_CHAR
yy:两位数字的年份 2004–>04
yyyy:四位数字的年份 2004年
mm:两位数字的月份 8 月–>08
dd:两位数字的天 30 号–>30
hh24: 8点–>20
hh12:8点–>08
mi、ss–>显示分钟\秒
9:显示数字,并忽略前面0
0:显示数字,如位数不足,则用0补齐
.:在指定位置显示小数点
,:在指定位置显示逗号
$:在数字前加美元
L:在数字前面加本地货币符号
C:在数字前面加国际货币符号
G:在指定位置显示组分隔符、
D:在指定位置显示小数点符号(.)
SELECT to_char(DATE'2016-01-01','yyyy-MM-dd') FROM dual;
TO_DATE
SELECT to_date('2016-01-01','yyyy-MM-dd') FROM dual;
TO_NUMBER
select to_number(0.25,'9.00') a from dual;