SQL Fundamentals || Single-Row Functions || 字符函数 character functions
SQL Fundamentals || Single-Row Functions || 数字函数number functions
SQL Fundamentals || Single-Row Functions || 日期函数date functions
SQL Fundamentals || Single-Row Functions || 转换函数 Conversion function
SQL Fundamentals || Single-Row Functions || 通用函数 General function
数据库中主要使用的数据类型:字符,数字,日期(时间戳)
日期、字符、数字之间可以完成互相转换功能;
函数名称 |
描述 |
TO_CHAR(日期 | 数字 | 列,转换格式) |
SQL> SELECT SYSDATE,TO_CHAR(SYSDATE,'YY-MM-DD HH24:MI:SS') FROM DUAL; SYSDATE TO_CHAR(SYSDATE,' ------------------ ----------------- 24-JUL-17 17-07-24 17:15:53 SELECT SYSDATE 当前系统时间 ,TO_CHAR(SYSDATE,'YYYY-MM-DD') 格式化日期 , TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') 格式化日期时间 , TO_CHAR(SYSDATE,'FMYYYY-MM-DD HH24:MI:SS') 去掉前导0的日期时间 FROM dual ; 使用FM可以取消前导0,但不建议去掉.
SELECT SYSDATE ,TO_CHAR(SYSDATE,'YEAR-MONTH-DY') FROM dual ;
SELECT * FROM emp WHERE TO_CHAR(hiredate,'MM')='02' ; SELECT * FROM emp WHERE TO_CHAR(hiredate,'MM')=2 ;
SELECT empno,ename,job,hiredate, TO_CHAR(hiredate,'YYYY-MM-DD') 格式化雇佣日期, TO_CHAR(hiredate,'YYYY') 年 , TO_CHAR(hiredate,'MM') 月,TO_CHAR(hiredate,'DD') 日 FROM emp ;
SELECT empno ,ename , hiredate ,TO_CHAR(hiredate,'YEAR-MONTH-DY') FROM emp ; |
TO_DATE(字符串 | 列,转换格式) |
将指定字符串按照指定的格式变为DATE型 SELECT TO_DATE('1979-09-19','YYYY-MM-DD') FROM dual ; |
TO_NUMBER(字符串 | 列) |
1、格式化数字:
SELECT TO_CHAR(987654321.789,'999,999,999,999.99999') 格式化数字 , TO_CHAR(987654321.789,'000,000,000,000.00000') 格式化数字 FROM dual ;
SELECT TO_CHAR(987654321.789,'L999,999,999,999.99999') 显示货币 , TO_CHAR(987654321.789,'$999,999,999,999.99999') 显示美元 FROM dual ; 2、字符串变为数字.
SELECT TO_NUMBER('09') + TO_NUMBER('19') 加法计算 , TO_NUMBER('09') * TO_NUMBER('19') 乘法计算 FROM dual ;
SELECT '09' + '19' 加法计算 , '09' * '19' 乘法计算 FROM dual ; |
TO_TIMESTAMP |
SELECT TO_TIMESTAMP('1981-09-27 18:07:10','YYYY-MM-DD HH24:MI:SS') datetime FROM dual ; |
日期格式化标记:
转换格式 |
描述 |
YYYY |
完整的年份数字表示,年有四位,所以使用四个Y |
Y,YYY |
带逗号的年 |
YYY |
年的后三位 |
YY |
年的后两位 |
Y |
年的最后一位 |
YEAR |
年份的文字表示,直接表示四位的年 |
MONTH |
月份的文字表示,直接表示两位的月 |
MM |
用两位数字来表示月份,月有两位,所以使用两个M |
DAY |
天数的文字表示 |
DDD |
表示一年里的天数(001 ~ 366) |
DD |
表示一月里的天数(01 ~ 31) |
D |
表示一周里的天数(1 ~ 7) |
DY |
用文字表示星期几 |
WW |
表示一年里的周数 |
W |
表示一月里的周数 |
HH |
表示12小时制,小时是两位数字,使用两个H |
HH24 |
表示24小时制 |
MI |
表示分钟 |
SS |
表示秒,秒是两位数字,使用两个S |
SSSSS |
午夜之后的秒数字表示(0 ~ 86399) |
AM | PM(A.M. | P.M.) |
表示上午或下午 |
FM |
去掉查询后的前导0,该标记用于时间模板的后缀 |
数字格式化标识:
转换格式 |
描述 |
9 |
表示一位数字 |
0 |
显示前导0 |
$ |
将货币的符号显示为美圆符号 |
L |
根据语言环境不同,自动选择货币符号 |
. |
显示小数点 |
, |
显示千位符 |
Using Conversion Functions
In some cases, the Oracle server receives data of one data type where it expects data of a different data type. When this happens, the Oracle server can automatically convert the data to the expected data type. This data type conversion can be done implicitly隐式 by the Oracle server or explicitly显式 by the user.
隐式 Implicit |
Implicit Data Type Conversion A VARCHAR2 or CHAR value can be implicitly converted to NUMBER or DATE type value by Oracle. Similarly, a NUMBER or DATA type value can be automatically converted to character data by Oracle server. Note that the impicit interconversion happens only when the character represents the a valid number or date type value respectively. Implicit data type conversions work according to the rules explained in the following sides. In expressions, the Oracle server can automatically convert the following: 在表达式中,一个字符串值能被隐式转换为数字或日期类型。 字符串到数字的转换只有当字符串表示一个合法的数字时才能成功.
|
||||||||||
显式 Explicit |
Explicit Data Type Conversion SQL Conversion functions are single row functions which are capable of typecasting column value, literal or an expression . TO_CHAR, TO_NUMBER and TO_DATE are the three functions which perform cross modification of data types. Explicit data type conversions are performed by using the conversion functions. Conversion functions convert a value from one data type to another. Generally, the form of the function names follows the convention data type TO data type. The first data type is the input data type and the second data type is the output. 显示数据类型转换通过转换函数执行。转换函数将一个值从一种类型转换成另一种类型. |
Function |
Purpose |
TO_CHAR(number | date,[fmt],[nlsparams]) |
Converts a number or date value to a VARCHAR2 character string with the format model fmt. fmt是格式模型,指定转换后的字符串的格式. |
TO_NUMBER(char,[fmt],[nlsparams]) |
将字符串转换为数字 |
TO_DATE(char,[fmt],[nlsparams]) |
将字符转换为时间 |