转换函数:
TO_DATE:转换为日期
--将字符串转换为日期 SELECT TO_DATE('2014-12-31', 'yyyy-mm-dd') FROM DUAL; SELECT TO_DATE('2014-12-31 15:20:45', 'yyyy-mm-dd hh24:mi:ss') FROM DUAL; SELECT TO_DATE('2014年12月31日', 'yyyy"年"mm"月"dd"日') AS T FROM DUAL; --两个日期间的天数 SELECT FLOOR(SYSDATE - TO_DATE('20141201', 'yyyymmdd')) FROM DUAL;
TO_CHAR:转换为字符串
SELECT TO_CHAR(SYSDATE, 'yyyy-mm-dd hh24:mi:ss') AS NOWTIME FROM DUAL; --日期转化为字符串 SELECT TO_CHAR(SYSDATE, 'yyyy') AS NOWYEAR FROM DUAL; --获取时间的年 SELECT TO_CHAR(SYSDATE, 'mm') AS NOWMONTH FROM DUAL; --获取时间的月 SELECT TO_CHAR(SYSDATE, 'dd') AS NOWDAY FROM DUAL; --获取时间的日 SELECT TO_CHAR(SYSDATE, 'hh24') AS NOWHOUR FROM DUAL; --获取时间的时 SELECT TO_CHAR(SYSDATE, 'mi') AS NOWMINUTE FROM DUAL; --获取时间的分 SELECT TO_CHAR(SYSDATE, 'ss') AS NOWSECOND FROM DUAL; --获取时间的秒 SELECT TO_CHAR(SYSDATE, 'yyyy"年"mm"月"dd"日') AS T FROM DUAL; --带中文的时间格式
TO_NUMBER:转换为数字
To_number函数中也有很多预定义的固定格式:
9 |
代表一个数字 |
0 |
强迫0显示 |
$ |
显示美元符号 |
L |
强制显示一个当地的货币符号 |
. |
显示一个小数点 |
, |
显示一个千位分隔符号 |
SELECT TO_CHAR(123456.235,'L999900.99') FROM DUAL --以当前系统货币格式显示数据,小数部分可以设置保留位数,会进行四舍五入 结果: ¥12345.24 SELECT TO_NUMBER(TO_CHAR(SYSDATE, 'hh24')) FROM DUAL; --以数字显示的小时数
其他函数
NVL(exp1,exp2):如果 exp1的值为null,则返回exp2的值,否则返回exp1的值。
SELECT ename,NVL(col, 0) FROM TEST; --如果col列为null,则返回0
NVL2(exp1,exp2,exp2):
如果exp1的值为null,则返回exp2的值,否则返回exp3的值。
DECODE(value,if1,then1,if2,then2,...else):
如果value的值为if1,则返回then1的值,如果value的值为if2,则返回then2的值,...否则返回else的值。