Oracle转换函数
oracle将一串数字转换为字符串的函数
oracle将一串数字转换为字符串的函数Oracle是一种常用的关系型数据库管理系统,它提供了丰富的函数和工具来处理数据。
其中一个常用的函数是将一串数字转换为字符串的函数。
在本文中,我们将介绍如何使用Oracle中的函数来实现这个功能。
在Oracle中,可以使用TO_CHAR函数将数字转换为字符串。
TO_CHAR函数的语法如下:TO_CHAR(number, [format], [nlsparam])其中,number是要转换的数字,format是可选的格式化字符串,nlsparam是可选的国家语言设置参数。
首先,我们来看一个简单的例子。
假设我们有一个数字列num,其中包含了一些整数值。
我们想要将这些整数值转换为字符串,并将其存储在一个新的列str中。
我们可以使用如下的SQL语句来实现:```UPDATE table_nameSET str = TO_CHAR(num)```在这个例子中,我们使用了TO_CHAR函数将num列中的每个整数值转换为字符串,并将其存储在str列中。
通过执行这个UPDATE语句,我们可以将数字转换为字符串并更新表中的数据。
除了简单的转换,TO_CHAR函数还可以使用格式化字符串来控制转换的结果。
例如,我们可以使用格式化字符串来指定转换后字符串的长度、小数位数、千位分隔符等。
下面是一些常用的格式化字符串的示例:- 'FM9999':将数字转换为至少4位的字符串,不包含千位分隔符。
- 'FM9999.99':将数字转换为至少4位整数和2位小数的字符串,不包含千位分隔符。
- 'FM9,999':将数字转换为至少4位的字符串,包含千位分隔符。
例如,我们可以使用如下的SQL语句将一个数字列num转换为至少4位整数和2位小数的字符串,并将其存储在str列中:```UPDATE table_nameSET str = TO_CHAR(num, 'FM9999.99')```通过执行这个UPDATE语句,我们可以将数字转换为指定格式的字符串并更新表中的数据。
oracle 类型转换函数
To_number:转换成数值类型,如:To_number('1234.5'),结果:1234.5
自动类型转换
Oracle可以自动根据具体情况进行如下的转换:
ceil:求大于等于某数的最小整数,如:ceil(2.35) 3
floor:求小于等于某数的最大整数,如:floor(2.35) 2
round:按指定精度对十进制数四舍五入,如:round(45.923, 1),结果,45.9
round(45.923, 0),结果,46
round(45.923, −1),结果,50
输入并执行查询:
Sql代码
SELECT ename, round(sysdate-hiredate) DAYS
FROM emp
WHERE deptno = 10;
SELECT ename, round(sysdate-hiredate) DAYS
自动转换数值型数据到字符型。
执行以下查询:
Sql代码
SELECT '12.5'||11 FROM dual;
SELECT '12.5'||11 FROM dual;
结果为:
Sql代码
'12.5'
------
12.511
concat:连接两个字符串 concat('SQL', ' Course') SQL Course
substr:给出起始位置和长度,返回子字符串,如:substr('String',1,3) Str
oracle todate和tochar用法
oracle todate和tochar用法
在Oracle数据库中,TO_DATE和TO_CHAR是两个常用的日期和字符串转换函数。
TO_DATE函数用于将字符串转换为日期类型。
它的语法是:
```sql
TO_DATE(string, format_mask)
```
其中,string是需要转换的字符串,format_mask是日期格式模板,用于指定字符串的日期格式。
例如,以下是一个将字符串''转换为日期类型的例子:
```sql
SELECT TO_DATE('', 'YYYY-MM-DD') FROM dual;
```
TO_CHAR函数用于将日期类型转换为字符串。
它的语法是:
```sql
TO_CHAR(date, format_mask)
```
其中,date是需要转换的日期类型,format_mask是日期格式模板,用于指定输出的字符串格式。
例如,以下是将日期类型''转换为字符串'23-Oct-2023'的例子:
```sql
SELECT TO_CHAR(TO_DATE('', 'YYYY-MM-DD'), 'DD-Mon-YYYY') FROM dual;
```
需要注意的是,TO_CHAR和TO_DATE函数的使用需要指定正确的日期格式模板,否则可能会出现错误或不正确的结果。
oracle sql常用函数
oracle sql常用函数Oracle SQL中有许多常用的函数,它们可以用于数据处理、计算和转换。
以下是一些常用的Oracle SQL函数:1. 字符串函数:`SUBSTR(str, start, length)`: 返回字符串str中从start位置开始的长度为length的子串。
`UPPER(str)`: 将字符串str转换为大写。
`LOWER(str)`: 将字符串str转换为小写。
`INSTR(str, substr)`: 返回子串substr在字符串str中第一次出现的位置。
2. 数值函数:`ROUND(num, decimal_places)`: 对num进行四舍五入,保留decimal_places位小数。
`TRUNC(num, decimal_places)`: 对num进行截断,保留decimal_places位小数。
`MOD(n, m)`: 返回n除以m的余数。
3. 日期函数:`SYSDATE`: 返回当前日期和时间。
`TO_CHAR(date, format)`: 将日期date按照指定的格式转换为字符串。
`MONTHS_BETWEEN(date1, date2)`: 返回date1和date2之间相差的月数。
4. 转换函数:`TO_NUMBER(str)`: 将字符串str转换为数值型。
`TO_DATE(str, format)`: 将字符串str按照指定的格式转换为日期型。
5. 聚合函数:`SUM(column)`: 计算指定列的总和。
`AVG(column)`: 计算指定列的平均值。
`COUNT(column)`: 计算指定列的行数。
6. 条件函数:`CASE WHEN condition THEN result1 ELSE result2 END`: 根据条件返回不同的结果。
以上列举的函数只是Oracle SQL中的一部分常用函数,还有许多其他函数可以根据具体的需求进行选择和应用。
ORACLE常用数值函数、转换函数、字符串函数介绍
ORACLE常用数值函数、转换函数、字符串函数介绍2009年03月11日星期三22:16本文更多将会介绍三思在日常中经常会用到的,或者虽然很少用到,但是感觉挺有意思的一些函数。
分二类介绍,分别是:著名函数篇-经常用到的函数非著名函数篇-即虽然很少用到,但某些情况下却很实用注:N表示数字型,C表示字符型,D表示日期型,[]表示内中参数可被忽略,fmt表示格式。
单值函数在查询中返回单个值,可被应用到select,where子句,start with以及connect by 子句和having子句。
(一).数值型函数(Number Functions)数值型函数输入数字型参数并返回数值型的值。
多数该类函数的返回值支持38位小数点,诸如:COS, COSH, EXP, LN, LOG, SIN, SINH, SQRT, TAN, and TANH 支持36位小数点。
ACOS, ASIN, ATAN, and A TAN2支持30位小数点。
1、MOD(n1,n2) 返回n1除n2的余数,如果n2=0则返回n1的值。
例如:SELECT MOD(24,5) FROM DUAL;2、ROUND(n1[,n2]) 返回四舍五入小数点右边n2位后n1的值,n2缺省值为0,如果n2为负数就舍入到小数点左边相应的位上(虽然oracle documents上提到n2的值必须为整数,事实上执行时此处的判断并不严谨,即使n2为非整数,它也会自动将n2取整后做处理,但是我文档中其它提到必须为整的地方需要特别注意,如果不为整执行时会报错的)。
例如:SELECT ROUND(23.56),ROUND(23.56,1),ROUND(23.56,-1) FROM DUAL;3、TRUNC(n1[,n2] 返回截尾到n2位小数的n1的值,n2缺省设置为0,当n2为缺省设置时会将n1截尾为整数,如果n2为负值,就截尾在小数点左边相应的位上。
orcale行转列函数
orcale行转列函数Oracle行转列函数,也被称为Pivot函数,是Oracle数据库中一种非常重要的数据转换函数。
它可以将一行数据转换成一列数据,或者将一列数据转换为一行数据,方便管理和处理数据。
在本文中,我们将分步骤地阐述如何使用Oracle行转列函数。
第一步,创建测试数据表Oracle行转列函数需要测试数据,因此首先需要创建一个测试数据表。
创建测试数据表的语句如下:CREATE TABLE test_data(id INT,name VARCHAR2(20),value NUMBER);然后,我们向测试数据表中添加一些示例数据:INSERT INTO test_data (id, name, value) VALUES (1, 'A', 10);INSERT INTO test_data (id, name, value) VALUES (1, 'B', 20); INSERT INTO test_data (id, name, value) VALUES (2, 'A', 30); INSERT INTO test_data (id, name, value) VALUES (2, 'B', 40); INSERT INTO test_data (id, name, value) VALUES (3, 'A', 50); INSERT INTO test_data (id, name, value) VALUES (3, 'B', 60);第二步,使用PIVOT函数进行行转列操作Oracle行转列函数PIVOT有两种用法,第一种是基于聚合函数进行行转列操作,第二种是基于CASE语句进行行转列操作。
我们将介绍这两种用法。
基于聚合函数进行行转列操作以下是基于聚合函数进行行转列操作的语句:SELECT *FROM test_dataPIVOT (SUM(value) FOR name IN ('A' as a_value, 'B' as b_value))ORDER BY id;在上述语句中,我们使用了SUM函数作为聚合函数,并使用FOR name IN语句指定需要行转列的列名。
Oracle行列转换函数--Pivot和Unpivot
Oracle⾏列转换函数--Pivot和UnpivotPivot 和 Unpivot使⽤简单的 SQL 以电⼦表格类型的交叉表报表显⽰任何关系表中的信息,并将交叉表中的所有数据存储到关系表中。
Pivot如您所知,关系表是表格化的,即,它们以列-值对的形式出现。
假设⼀个表名为 CUSTOMERS。
COPYCopied to ClipboardError: Could not CopySQL> desc customersName Null? TypeCUST_ID NUMBER(10)CUST_NAME VARCHAR2(20)STATE_CODE VARCHAR2(2)TIMES_PURCHASED NUMBER(3)选定该表:select cust_id, state_code, times_purchasedfrom customersorder by cust_id;输出结果如下:CUST_ID STATE_CODE TIMES_PURCHASED1 CT 12 NY 103 NJ 24 NY 4...and so on ...SQL> desc customersName Null? TypeCUST_ID NUMBER(10)CUST_NAME VARCHAR2(20)STATE_CODE VARCHAR2(2)TIMES_PURCHASED NUMBER(3)选定该表:select cust_id, state_code, times_purchasedfrom customersorder by cust_id;输出结果如下:CUST_ID STATE_CODE TIMES_PURCHASED1 CT 12 NY 103 NJ 24 NY 4...and so on ...注意数据是如何以⾏值的形式显⽰的:针对每个客户,该记录显⽰了客户所在的州以及该客户在商店购物的次数。
oracle转换函数
转换函数转换函数将值从一种数据类型转换为另外一种数据类型。
在Oracle 中常用的转换函数主要有三个:TO_CHAR、TO_DATE 和TO_NUMBER。
1、TO_CHAR() 本函数又可以分三小类,分别是<1>转换字符‐>字符TO_CHAR(c):将nchar,nvarchar2,clob,nclob类型转换为char类型;例如:S ELECT TO_CHAR('AABBCC')FROM d ual;<2>转换时间‐>字符TO_CHAR(d[,fmt]):将指定的时间按照指定格式转换为varchar2类型;例如:S ELECT TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss')FROM d ual;<3>转换数值‐>字符TO_CHAR(n[,fmt]):将指定数值n按照指定格式fmt转换为varchar2类型并返回;例如:S ELECT TO_CHAR(-100,'L99G999D99MI')FROM d ual;2、T O_DATE(c[,fmt[,nls]])将char,nchar,varchar2,nvarchar2转换为日期类型,如果fmt参数不为空,则按照fmt中指定格式进行转换。
注意这里的fmt参数。
如果ftm为'J'则表示按照公元制(J ulian day)转换,c则必须为大于0并小于5373484的正整数。
例如:SELECT TO_DATE(2454336,'J')FROM d ual;SELECT TO_DATE('2007-8-23 23:25:00','yyyy-mm-dd hh24:mi:ss') FROM d ual;3、T O_NUMBER(c[,fmt[,nls]])将char,nchar,varchar2,nvarchar2型字串按照fmt中指定格式转换为数值类型并返回。
Oracle日期函数和转换函数
Oracle⽇期函数和转换函数⼀、⽇期函数⽇期函数⽤于处理date类型的数据,两个⽇期相减返回⽇期之间相差的天数。
⽇期不允许做加法运算,⽆意义。
常见代表符号:yyyy 年,mm ⽉,dd ⽇,hh ⼩时,mi 分钟,ss 秒,day 星期默认情况下⽇期格式是dd-mon-yy即12-3⽉-19(1)sysdate: 该函数返回系统时间(2)months_between(m,n)⽇期m和⽇期n相差多少⽉数(3)add_months(d,n)在⽇期d上增加n个⽉数(4)next_day(d, '星期*') 指定⽇期d下⼀个星期*对应的⽇期(5)last_day(d):返回指定⽇期d所在⽉份的最后⼀天(6)extract(month from d)从⽇期d上提取⽉份数(7)round(d,time)⽇期的四舍五⼊(8)trunc(d,time)⽇期的截断以下是⽇期函数的⼀些例⼦及效果图:各种情况例⼦:months_between select months_between('01-9⽉-95','11-1⽉-94') from dual; --19.6774193548387add_months select add_months('11-2⽉-18',6) from dual; --2018/8/11next_day select next_day('11-2⽉-18','星期六') from dual; --2018/2/17last_day select last_day('11-2⽉-18') from dual; --2018/2/28round 四舍五⼊⽉份 25-7⽉-18 select round(to_date('25-7⽉-2018'), 'month') from dual; --2018/8/1round 四舍五⼊年份 25-7⽉-18 select round(to_date('25-7⽉-2018’), 'year') from dual; --2019/1/1trunc 截断⽉份 25-7⽉-18 select trunc(to_date('25-7⽉-2018'), 'month') from dual; --2018/7/1trunc 截断年份 25-7⽉-18 select trunc(to_date('25-7⽉-2018'), 'year') from dual; --2018/1/1trunc 当前⽇期的00点00分00秒 select trunc(sysdate) from dual;sql⽐较⽇期今天之前:select * from table where update < to_date('2012-09-07 00:00:00', 'yyyy-MM-dd HH24:mi:ss');精确时间:select * from table where update = to_date('2012-09-07 00:00:00', 'yyyy-MM-dd HH24:mi:ss');某段时间内:select * from table where update <= to_date('2012-09-07 00:00:00', 'yyyy-MM-dd HH24:mi:ss')and update >= to_date('2010-02-07 00:00:00', 'yyyy-MM-dd HH24:mi:ss')eg:查找已经⼊职8个⽉多的员⼯SQL>select * from empwhere sysdate>=add_months(hiredate,8);eg:显⽰满10年服务年限的员⼯的姓名和受雇⽇期。
Oracle数据库中chr()、ascii()、asciistr()、convert()函数的使用
Oracle数据库中chr()、ascii()、asciistr()、convert()函数的使用文档作者: 叶玉虎创建日期: 2016-08-22更新日期: 2016-08-22Version: 1.文档控制更改记录审阅分发人员参考文献一.Oracle数据库中chr()、ascii()、asciistr()、convert()函数的使用在oracle数据库中有很多的转换函数,主要有chr()、ascii()、asciistr()、cast()、chartorowid()、convert()、rowidtochar()、to_char()、to_date()、to_number()等,其中to_char()、to_date()、to_number()是最常见也是最常用的,chr()一般常出现在控制字符串输出的时候。
本文主要总结chr()、ascii()、asciistr()、convert()这四个转换函数:1、chr()chr()函数是将ASCII码转换为字符:ASCII码->字符,ASCII码对应的字符可以参见本文后面的ASCII编码表。
图1:chr()示例2、ascii()ascii()函数是chr()的反函数,它表示将字符转换为ASCII码:字符-> ASCII码。
图2:ascii()示例3、asciistr()asciistr()函数是将字符串转换为ascii字符串,如下图3:图3:asciistr()示例关于asciistr()函数,我在网上看到一篇文章说可以用asciistr()函数来判断一个字符串中是否含有中文字符,我看了其思路,挺有参考价值的,大概是这样的:图4:用asciistr()函数判断一个字符串中是否含有中文字符根据上图4可以看出,如果是中文字符,那么用asciistr()转换以后,其形式是\4E2D这样的,前面有斜杠\,但是并不是所有带有\都是中文字符,因为斜杠\本身用asciistr()转换后,其结果是\005C,也是带有\的,所以对于这个字符要特别注意下。
oracle date函数转化成datetime函数的方法
oracle date函数转化成datetime函数的方法
在Oracle数据库中,将日期函数转换为日期时间函数可以使用
`TO_TIMESTAMP`函数。
`TO_TIMESTAMP`函数可以将日期转换为日期时间类型。
以下是使用`TO_TIMESTAMP`函数将日期转换为日期时间函数的示例:
```sql
SELECT TO_TIMESTAMP(TO_DATE('', 'YYYY-MM-DD'), 'YYYY-MM-DD HH24:MI:SS') AS datetime_value
FROM dual;
```
在上述示例中,首先使用`TO_DATE`函数将字符串''转换为日期类型,然后使用`TO_TIMESTAMP`函数将日期类型转换为日期时间类型。
`'YYYY-MM-DD HH24:MI:SS'`指定了日期时间的格式,其中`YYYY`表示年份,`MM`表示月份,`DD`表示日期,`HH24`表示24小时制的小时数,`MI`表示分钟,`SS`表示秒数。
运行上述查询将返回一个包含日期时间值的行。
请注意,日期和日期时间在Oracle中是不同的数据类型。
日期只包含日期部分,而日期时间包含日期和时间部分。
根据需要选择适当的数据类型来处理日期和时间值。
ORACLE常用函数——转换函数
ORACLE常⽤函数——转换函数------------------------------------------类型转换函数------------------------------------------------⾃动类型转换, ORACLE 可以⾃动根据具体情况进⾏如下转换:*字符串到数值*字符串到⽇期*数值到字符串*⽇期到字符串EX:--*字符串到数值SELECT'3.14159'+20FROM DUAL;SELECT'3.1T'+20FROM DUAL; --报错:⽆效数字,即字符串必须能转换为数值类型才能进⾏操作--*数值到字符串SELECT'100'||124FROM DUAL;--1: TO_CHAR(DATE,'FORMAT')把对应的数据转换为字符串类型SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM DUAL;SELECT TO_CHAR(SAL) FROM SCOTT.EMP;SELECT TO_CHAR(122323.45, '$99999999.99') FROM DUAL;Y或YY或YYY 年的最后⼀位,两位或三位SELECT TO_CHAR(SYSDATE, 'YYY') FROM DUAL;SELECT TO_CHAR(SYSDATE, 'YY') FROM DUAL;SYEAR或YEAR SYEAR使公元前的年份前加⼀负号SELECT TO_CHAR(SYSDATE, 'SYEAR') FROM DUAL; --TWENTY ELEVENQ 季度,1~3⽉为第⼀季度SELECT TO_CHAR(SYSDATE, 'Q') FROM DUAL; -- 2表⽰第⼆季度MM ⽉份数SELECT TO_CHAR(SYSDATE, 'MM') FROM DUAL; --04表⽰4⽉RM ⽉份的罗马表⽰SELECT TO_CHAR(SYSDATE, 'RM') FROM DUAL; --IV表⽰4⽉Month⽤9个字符长度表⽰的⽉份名SELECT TO_CHAR(SYSDATE, 'MONTH') FROM DUAL; -- 4⽉WW 当年第⼏周SELECT TO_CHAR(SYSDATE, 'WW') FROM DUAL; -- 24表⽰2002年6⽉13⽇为第24周W 本⽉第⼏周SELECT TO_CHAR(SYSDATE, 'W') FROM DUAL; -- 2011年04⽉26⽇为第4周DDD 当年第⼏天. 1⽉1⽇为001,2⽉1⽇为032SELECT TO_CHAR(SYSDATE, 'DDD') FROM DUAL;DD 当⽉第⼏天SELECT TO_CHAR(SYSDATE, 'DD') FROM DUAL;D 周内第⼏天SELECT TO_CHAR(SYSDATE, 'D') FROM DUAL;DY 周内第⼏天缩写SELECT TO_CHAR(SYSDATE, 'DY') FROM DUAL;HH或HH12 12进制⼩时数SELECT TO_CHAR(SYSDATE, 'HH') FROM DUAL;HH24 24⼩时制SELECT TO_CHAR(SYSDATE, 'HH24') FROM DUAL;MI 分钟数(0~59)SELECT TO_CHAR(SYSDATE, 'MI') FROM DUAL;提⽰注意不要将MM格式⽤于分钟(分钟应该使⽤MI)。
第7讲 转换函数,特殊函数
第7讲转换函数,特殊函数目的:1.掌握Oracle转换函数的语法2.掌握转换函数的使用授课内容:转换函数:1.数值转为字符串:TO_CHAR(number) 无格式2.数值转换位字符串,有格式:TO_CHAR(number, format):经常用于报表的数据显示,如财务,条件表要求的格式一般是带千分号,和小数点的格式。
234,222,111。
09例子:select to_char('8012.9998','$999,999,999.99')from dual$8,012.98select to_char('8012.97778','$999,999,999.99')from dual$8,012.98 (自动进行四舍五入)3.日期转为字符串:TO_CHAR(date, format):将给定的日期按格式转换为字符串,格式参照to_date()的日期格式。
在实际应用中,此函数是用的最多的函数,用于数据的统计。
4.字符串转为数值:TO_NUMBER(String)无格式的字符串转换位数值的函数,字符串中只能包含数字,小数点,正,负号。
如:select to_number('+9222.989')from dual5.TO_NUMBER(String, number_format)允许有格式的字符串,转换为数值。
select to_number('+9222.00','S9999999.99')from dualselect to_number('RMB999,999','L999,999.00')from dual如果只写select to_number('RMB999,999')from dual由于没有格式就是非法的。
6.TO_DATE(String, format):将字符串按格式转换为日期。
Oracle特色函数及复杂更新应用
ADD_MONTHS NEXT_DAY
加月份以日期 指定日期的下一天
LAST_DAY ROUND TRUNC
一个月中的最后一天 Round 日期 Truncate 日期
练习-日期运算
❖ 得到2010-5-10至2010-9-13经过了多少天 ❖ 得到2010-5-10至2010-9-13经过了多少个月 ❖ 得到某个日期两个月后的日期 ❖ 得到某个日期这天后100天的日期 ❖ 得到某个日期两个月后的那个月的最后一天
通用函数
这些函数适用于任何数据类型,同时也适用于空值 :
❖ NVL (expr1, expr2) ❖ NVL2 (expr1, expr2, expr3) ❖ NULLIF (expr1, expr2) ❖ COALESCE (expr1, expr2, ..., exprn)
NVL 函数
将空值转换成一个已知的值: ❖ 可以使用的数据类型有日期、字符、数字。 ❖ 函数的一般形式:
e.email, e.phone_number, e.hire_date, e.job_id,
e.salary, mission_pct, e.manager_id,
e.department_id);
合并语句举例
SELECT * FROM COPY_EMP;
no rows selected MERGE INTO copy_emp c
USING employees e ON (c.employee_id = e.employee_id) WHEN MATCHED THEN UPDATE SET
... WHEN NOT MATCHED THEN
INSERT VALUES...;
SELECT * FROM COPY_EMP;
oracle转16进制函数
oracle转16进制函数在Oracle数据库中,可以使用内置函数TO_HEX来将数值转换为16进制表示。
TO_HEX函数接受一个数值作为输入,并返回其对应的16进制字符串。
以下是TO_HEX函数的语法:TO_HEX(numeric_value)numeric_value参数是一个数值(整数或浮点数),可以是数据库列、常量或表达式。
示例:```SELECT TO_HEX(10) AS hex_valueFROM dual;```输出结果:```HEX_VALUE----------A```在上面的示例中,TO_HEX函数将十进制数值10转换为16进制字符串"A"。
如果输入的数值是浮点数,TO_HEX函数会将其四舍五入为最接近的整数,然后进行转换。
TO_HEX函数还可以用于将日期和时间类型的值转换为16进制字符串。
以下是一些示例:```-- 将日期转换为16进制SELECT TO_HEX(TO_DATE('2022-01-01', 'YYYY-MM-DD')) AS hex_valueFROM dual;```输出结果:```HEX_VALUE----------323032322D30312D3031-- 将时间转换为16进制SELECT TO_HEX(TO_DATE('13:45:30', 'HH24:MI:SS')) AS hex_valueFROM dual;```输出结果:```HEX_VALUE----------31333A34353A3330```除了TO_HEX函数外,Oracle还提供了其他一些相关的16进制函数,用于处理16进制字符串。
以下是一些常用的函数:- HEXTORAW: 将16进制字符串转换为原始二进制数据。
- RAWTOHEX: 将原始二进制数据转换为16进制字符串。
- UTL_RAW.CAST_TO_RAW: 将字符串转换为原始二进制数据。
oracle 10g函数大全--转换函数
oracle 10g函数大全--转换函数chartorowid(c1)【功能】转换varchar2类型为rowid值【参数】c1,字符串,长度为18的字符串,字符串必须符合rowid格式【返回】返回rowid值【示例】SELECT chartorowid('AAAADeAABAAAAZSAAA') FROM DUAL;【说明】在Oracle中,每一条记录都有一个rowid,rowid在整个数据库中是唯一的,r owid确定了每条记录是在Oracle中的哪一个数据文件、块、行上。
在重复的记录中,可能所有列的内容都相同,但rowid不会相同.ROWIDTOCHAR(rowid)【功能】转换rowid值为varchar2类型【参数】rowid,固定参数【返回】返回长度为18的字符串【示例】SELECT ROWIDTOCHAR(rowid) FROM DUAL;【说明】在Oracle中,每一条记录都有一个rowid,rowid在整个数据库中是唯一的,r owid确定了每条记录是在Oracle中的哪一个数据文件、块、行上。
在重复的记录中,可能所有列的内容都相同,但rowid不会相同.CONVERT(c1,set1,set2)【功能】将源字符串c1 从一个语言字符集set2转换到另一个目的set1字符集【参数】c1,字符串,set1,set2为字符型参数【返回】字符串【示例】select convert('strutz','we8hp','f7dec') "conversion" from dual;conver------strutzselect convert(name,'us7ascii','zhs16cgb231280') "conversion" from du al;HEXTORAW(c1)【功能】将一个十六进制构成的字符串转换为二进制【参数】c1,十六进制的字符串【返回】字符串【示例】select HEXTORAW('A123') from dual;RAWTOHEX(c1)【功能】将一个二进制构成的字符串转换为十六进制【参数】c1,二进制的字符串【返回】字符串【示例】select RAWTOHEX('A123') from dual;TO_CHAR(x[[,c2],C3])【功能】将日期或数据转换为char数据类型【参数】x是一个date或number数据类型。
oracle中的数据类型转换函数to_number
oracle中的数据类型转换函数to_number to_number也是oracle中常⽤的类型转换函数之⼀,是将⼀些处理过的按⼀定格式编排过的字符串变回数值型的格式。
这⾥简单介绍了to_number的⽤法并给出了详细的例⼦。
前⾯我们在介绍oracle的类型转换函数时介绍到了,to_char函数有⼀个作⽤是将数值型的值按指定的格式转换为字符串类型的格式。
这⾥的to_number那是就是将某些固定格式的字符转换为数值类型的值
To_number函数的格式如下:
To_number(varchar2 or char,’format model’)
To_number函数中也有很多预定义的固定格式:
9代表⼀个数字
0强迫0显⽰
$显⽰美元符号
L强制显⽰⼀个当地的货币符号
.显⽰⼀个⼩数点
,显⽰⼀个千位分隔符号
下⾯是⼀些转换的例⼦:
SQL>select to_number(’RMB234234.4350′,’L999999.0000′) from dual;
TO_NUMBER(’RMB234234.4350′,’L999999.0000′)
——————————————
234234.435
另⼀个例⼦是:
SQL>select to_number(’$123,233,455,623.3400′,’$999,999,999,999.0000′) from dual;
TO_NUMBER(’$123,233,455,623.3400′,’$999,999,999,999.0000′)
———————————————————-
1.2323E+11。
Oracle中的二进制、八进制、十进制、十六进制相互转换函数
今天在网上看到一篇关于在oracle中对各种进制数进行转换的帖子,觉得不错,也比较全面,几乎涵盖了经常用到的所有转换。
转过来学习一下,也方便以后查询。
========================================================================== ========大家经常遇到进制转换的问题,网上搜到的转换只是部分十进制与其它进制的转换,所以我把自己写的转换函数提供给大家,4种进制共12个转换函数,虽然有的转换直接使用to_char()和to_number()就可以实现,但我还是把它们整理到一起,使用和查找都方便。
部分函数需要先创建type_str_agg类型和f_stragg函数才能使用,这两个对象的代码也附在之后。
CREATE OR REPLACE PACKAGE pkg_number_trans ISFUNCTION f_bin_to_oct(p_str IN VARCHAR2) RETURN VARCHAR2;FUNCTION f_bin_to_dec(p_str IN VARCHAR2) RETURN VARCHAR2;FUNCTION f_bin_to_hex(p_str IN VARCHAR2) RETURN VARCHAR2;FUNCTION f_oct_to_bin(p_str IN VARCHAR2) RETURN VARCHAR2;FUNCTION f_oct_to_dec(p_str IN VARCHAR2) RETURN VARCHAR2;FUNCTION f_oct_to_hex(p_str IN VARCHAR2) RETURN VARCHAR2;FUNCTION f_hex_to_bin(p_str IN VARCHAR2) RETURN VARCHAR2;FUNCTION f_hex_to_oct(p_str IN VARCHAR2) RETURN VARCHAR2;FUNCTION f_hex_to_dec(p_str IN VARCHAR2) RETURN VARCHAR2;FUNCTION f_dec_to_bin(p_int IN VARCHAR2) RETURN VARCHAR2;FUNCTION f_dec_to_oct(p_int IN VARCHAR2) RETURN VARCHAR2;FUNCTION f_dec_to_hex(p_int IN VARCHAR2) RETURN VARCHAR2;END pkg_number_trans;/CREATE OR REPLACE PACKAGE BODY pkg_number_trans ISFUNCTION f_bin_to_oct(p_str IN VARCHAR2) RETURN VARCHAR2 IS---------------------------------------------------------------------------------------------------------------------- -- 对象名称: f_bin_to_oct-- 对象描述: 二进制转换八进制-- 输入参数: p_str 二进制字符串-- 返回结果: 八进制字符串-- 测试用例: SELECT pkg_number_trans.f_bin_to_oct('11110001010') FROM dual;-- 备注: 需要定义f_stragg函数和type_str_agg类型----------------------------------------------------------------------------------------------------------------------v_return VARCHAR2(4000);v_bin VARCHAR2(4000);BEGINv_bin := substr('00' || p_str, -3 * ceil(length(p_str) / 3));SELECT f_stragg(data1) INTO v_returnFROM (SELECT (CASE upper(substr(v_bin, (rownum - 1) * 3 + 1, 3))WHEN '000' THEN '0'WHEN '001' THEN '1'WHEN '010' THEN '2'WHEN '011' THEN '3'WHEN '100' THEN '4'WHEN '101' THEN '5'WHEN '110' THEN '6'WHEN '111' THEN '7'END) data1FROM dualCONNECT BY rownum <= length(v_bin) / 3);RETURN v_return;EXCEPTIONWHEN OTHERS THENRETURN NULL;END f_bin_to_oct;FUNCTION f_bin_to_dec(p_str IN VARCHAR2) RETURN VARCHAR2 IS---------------------------------------------------------------------------------------------------------------------- -- 对象名称: f_bin_to_dec-- 对象描述: 二进制转换十进制-- 输入参数: p_str 二进制字符串-- 返回结果: 十进制字符串-- 测试用例: SELECT pkg_number_trans.f_bin_to_dec('11110001010') FROM dual;---------------------------------------------------------------------------------------------------------------------- v_return VARCHAR2(4000);BEGINSELECT SUM(data1) INTO v_returnFROM (SELECT substr(p_str, rownum, 1) * power(2, length(p_str) - rownum) data1 FROM dualCONNECT BY rownum <= length(p_str));RETURN v_return;EXCEPTIONWHEN OTHERS THENRETURN NULL;END f_bin_to_dec;FUNCTION f_bin_to_hex(p_str IN VARCHAR2) RETURN VARCHAR2 IS---------------------------------------------------------------------------------------------------------------------- -- 对象名称: f_bin_to_hex-- 对象描述: 二进制转换十六进制-- 输入参数: p_str 二进制字符串-- 返回结果: 十六进制字符串-- 测试用例: SELECT pkg_number_trans.f_bin_to_oct('11110001010') FROM dual;-- 备注: 需要定义f_stragg函数和type_str_agg类型---------------------------------------------------------------------------------------------------------------------- v_return VARCHAR2(4000);v_bin VARCHAR2(4000);BEGINv_bin := substr('000' || p_str, -4 * ceil(length(p_str) / 4));SELECT f_stragg(data1) INTO v_returnFROM (SELECT (CASE upper(substr(v_bin, (rownum - 1) * 4 + 1, 4))WHEN '0000' THEN '0'WHEN '0001' THEN '1'WHEN '0010' THEN '2'WHEN '0011' THEN '3'WHEN '0100' THEN '4'WHEN '0101' THEN '5'WHEN '0110' THEN '6'WHEN '0111' THEN '7'WHEN '1000' THEN '8'WHEN '1001' THEN '9'WHEN '1010' THEN 'A'WHEN '1011' THEN 'B'WHEN '1100' THEN 'C'WHEN '1101' THEN 'D'WHEN '1110' THEN 'E'WHEN '1111' THEN 'F'END) data1FROM dualCONNECT BY rownum <= length(v_bin) / 4);RETURN v_return;EXCEPTIONWHEN OTHERS THENRETURN NULL;END f_bin_to_hex;FUNCTION f_oct_to_bin(p_str IN VARCHAR2) RETURN VARCHAR2 IS---------------------------------------------------------------------------------------------------------------------- -- 对象名称: f_oct_to_bin-- 对象描述: 八进制转换二进制-- 输入参数: p_str 八进制字符串-- 返回结果: 二进制字符串-- 测试用例: SELECT pkg_number_trans.f_oct_to_bin('3612') FROM dual;-- 备注: 需要定义f_stragg函数和type_str_agg类型---------------------------------------------------------------------------------------------------------------------- v_return VARCHAR2(4000);BEGINSELECT to_char(to_number(f_stragg(data1))) INTO v_returnFROM (SELECT (CASE upper(substr(p_str, rownum, 1))WHEN '0' THEN '000'WHEN '1' THEN '001'WHEN '2' THEN '010'WHEN '3' THEN '011'WHEN '4' THEN '100'WHEN '5' THEN '101'WHEN '6' THEN '110'WHEN '7' THEN '111'END) data1FROM dualCONNECT BY rownum <= length(p_str));RETURN v_return;EXCEPTIONWHEN OTHERS THENRETURN NULL;END f_oct_to_bin;FUNCTION f_oct_to_dec(p_str IN VARCHAR2) RETURN VARCHAR2 IS---------------------------------------------------------------------------------------------------------------------- -- 对象名称: f_oct_to_dec-- 对象描述: 八进制转换十进制-- 输入参数: p_str 八进制字符串-- 返回结果: 十进制字符串-- 测试用例: SELECT pkg_number_trans.f_oct_to_dec('3612') FROM dual;---------------------------------------------------------------------------------------------------------------------- v_return VARCHAR2(4000);BEGINSELECT SUM(data1) INTO v_returnFROM (SELECT substr(p_str, rownum, 1) * power(8, length(p_str) - rownum) data1 FROM dualCONNECT BY rownum <= length(p_str));RETURN v_return;EXCEPTIONWHEN OTHERS THENRETURN NULL;END f_oct_to_dec;FUNCTION f_oct_to_hex(p_str IN VARCHAR2) RETURN VARCHAR2 IS---------------------------------------------------------------------------------------------------------------------- -- 对象名称: f_oct_to_bin-- 对象描述: 八进制转换十六进制-- 输入参数: p_str 八进制字符串-- 返回结果: 十六进制字符串-- 测试用例: SELECT pkg_number_trans.f_oct_to_hex('3612') FROM dual;---------------------------------------------------------------------------------------------------------------------- v_return VARCHAR2(4000);v_bin VARCHAR2(4000);BEGINSELECT pkg_number_trans.f_oct_to_bin(p_str) INTO v_bin FROM dual;SELECT pkg_number_trans.f_bin_to_hex(v_bin) INTO v_return FROM dual;RETURN v_return;EXCEPTIONWHEN OTHERS THENRETURN NULL;END f_oct_to_hex;FUNCTION f_dec_to_bin(p_int IN VARCHAR2) RETURN VARCHAR2 IS---------------------------------------------------------------------------------------------------------------------- -- 对象名称: f_dec_to_bin-- 对象描述: 十进制转换二进制-- 输入参数: p_str 十进制字符串-- 返回结果: 二进制字符串-- 测试用例: SELECT pkg_number_trans.f_dec_to_bin('1930') FROM dual;---------------------------------------------------------------------------------------------------------------------- v_return VARCHAR2(4000);v_hex VARCHAR2(4000);BEGINSELECT pkg_number_trans.f_dec_to_hex(p_int) INTO v_hex FROM dual;SELECT pkg_number_trans.f_hex_to_bin(v_hex) INTO v_return FROM dual;RETURN v_return;EXCEPTIONWHEN OTHERS THENRETURN NULL;END f_dec_to_bin;FUNCTION f_dec_to_oct(p_int IN VARCHAR2) RETURN VARCHAR2 IS---------------------------------------------------------------------------------------------------------------------- -- 对象名称: f_dec_to_oct-- 对象描述: 十进制转换八进制-- 输入参数: p_str 十进制字符串-- 返回结果: 八进制字符串-- 测试用例: SELECT pkg_number_trans.f_dec_to_oct('1930') FROM dual;---------------------------------------------------------------------------------------------------------------------- v_return VARCHAR2(4000);v_bin VARCHAR2(4000);BEGINSELECT pkg_number_trans.f_dec_to_bin(p_int) INTO v_bin FROM dual;v_bin := substr('00' || v_bin, -3 * ceil(length(v_bin) / 3));SELECT f_stragg(data1) INTO v_returnFROM (SELECT (CASE upper(substr(v_bin, (rownum - 1) * 3 + 1, 3))WHEN '000' THEN '0'WHEN '001' THEN '1'WHEN '010' THEN '2'WHEN '011' THEN '3'WHEN '100' THEN '4'WHEN '101' THEN '5'WHEN '110' THEN '6'WHEN '111' THEN '7'END) data1FROM dualCONNECT BY rownum <= length(v_bin) / 3);RETURN v_return;EXCEPTIONWHEN OTHERS THENRETURN NULL;END f_dec_to_oct;FUNCTION f_dec_to_hex(p_int IN VARCHAR2) RETURN VARCHAR2 IS---------------------------------------------------------------------------------------------------------------------- -- 对象名称: f_dec_to_oct-- 对象描述: 十进制转换十六进制-- 输入参数: p_str 十进制字符串-- 返回结果: 十六进制字符串-- 测试用例: SELECT pkg_number_trans.f_dec_to_hex('1930') FROM dual;---------------------------------------------------------------------------------------------------------------------- v_return VARCHAR2(4000);BEGINSELECT upper(TRIM(to_char(p_int,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'))) INTO v_return FROM dual;RETURN v_return;EXCEPTIONWHEN OTHERS THENRETURN NULL;END f_dec_to_hex;FUNCTION f_hex_to_bin(p_str IN VARCHAR2) RETURN VARCHAR2 IS---------------------------------------------------------------------------------------------------------------------- -- 对象名称: f_dec_to_oct-- 对象描述: 十六进制转换二进制-- 输入参数: p_str 十六进制字符串-- 返回结果: 二进制字符串-- 测试用例: SELECT pkg_number_trans.f_hex_to_oct('78A') FROM dual;---------------------------------------------------------------------------------------------------------------------- v_return VARCHAR2(4000);BEGINSELECT to_char(to_number(f_stragg(data1))) INTO v_returnFROM (SELECT (CASE upper(substr(p_str, rownum, 1))WHEN '0' THEN '0000'WHEN '1' THEN '0001'WHEN '2' THEN '0010'WHEN '3' THEN '0011'WHEN '4' THEN '0100'WHEN '5' THEN '0101'WHEN '6' THEN '0110'WHEN '7' THEN '0111'WHEN '8' THEN '1000'WHEN '9' THEN '1001'WHEN 'A' THEN '1010'WHEN 'B' THEN '1011'WHEN 'C' THEN '1100'WHEN 'D' THEN '1101'WHEN 'E' THEN '1110'WHEN 'F' THEN '1111'END) data1FROM dualCONNECT BY rownum <= length(p_str));RETURN v_return;EXCEPTIONWHEN OTHERS THENRETURN NULL;END f_hex_to_bin;FUNCTION f_hex_to_oct(p_str IN VARCHAR2) RETURN VARCHAR2 IS---------------------------------------------------------------------------------------------------------------------- -- 对象名称: f_dec_to_oct-- 对象描述: 十六进制转换八进制-- 输入参数: p_str 十六进制字符串-- 返回结果: 八进制字符串-- 测试用例: SELECT pkg_number_trans.f_hex_to_oct('78A') FROM dual;---------------------------------------------------------------------------------------------------------------------- v_return VARCHAR2(4000);v_bin VARCHAR2(4000);BEGINSELECT pkg_number_trans.f_hex_to_bin(p_str) INTO v_bin FROM dual;SELECT pkg_number_trans.f_bin_to_oct(v_bin) INTO v_return FROM dual;RETURN v_return;EXCEPTIONWHEN OTHERS THENRETURN NULL;END f_hex_to_oct;FUNCTION f_hex_to_dec(p_str IN VARCHAR2) RETURN VARCHAR2 IS---------------------------------------------------------------------------------------------------------------------- -- 对象名称: f_hex_to_dec-- 对象描述: 十六进制转换十进制-- 输入参数: p_str 十六进制字符串-- 返回结果: 十进制字符串-- 测试用例: SELECT pkg_number_trans.f_hex_to_dec('78A') FROM dual;---------------------------------------------------------------------------------------------------------------------- v_return VARCHAR2(4000);BEGINSELECT SUM(data1) INTO v_returnFROM (SELECT (CASE upper(substr(p_str, rownum, 1))WHEN 'A' THEN '10'WHEN 'B' THEN '11'WHEN 'C' THEN '12'WHEN 'D' THEN '13'WHEN 'E' THEN '14'WHEN 'F' THEN '15'ELSE substr(p_str, rownum, 1)END) * power(16, length(p_str) - rownum) data1FROM dualCONNECT BY rownum <= length(p_str));RETURN v_return;EXCEPTIONWHEN OTHERS THENRETURN NULL;END f_hex_to_dec;END pkg_number_trans;/CREATE OR REPLACE TYPE type_str_agg AS OBJECT(total VARCHAR2(4000),STATIC FUNCTION odciaggregateinitialize(sctx IN OUT type_str_agg) RETURN NUMBER,MEMBER FUNCTION odciaggregateiterate(SELF IN OUT type_str_agg,VALUE IN VARCHAR2) RETURN NUMBER,MEMBER FUNCTION odciaggregateterminate(SELF IN type_str_agg,returnvalue OUT VARCHAR2,flags IN NUMBER) RETURN NUMBER,MEMBER FUNCTION odciaggregatemerge(SELF IN OUT type_str_agg,ctx2 IN type_str_agg) RETURN NUMBER)/CREATE OR REPLACE TYPE BODY type_str_agg ISSTATIC FUNCTION odciaggregateinitialize(sctx IN OUT type_str_agg) RETURN NUMBER ISBEGINsctx := type_str_agg(NULL);RETURN odciconst.success;END;MEMBER FUNCTION odciaggregateiterate(SELF IN OUT type_str_agg,VALUE IN VARCHAR2) RETURN NUMBER ISBEGINSELF.total := SELF.total || VALUE;RETURN odciconst.success;END;MEMBER FUNCTION odciaggregateterminate(SELF IN type_str_agg,returnvalue OUT VARCHAR2,flags IN NUMBER) RETURN NUMBER ISBEGINreturnvalue := SELF.total;RETURN odciconst.success;END;MEMBER FUNCTION odciaggregatemerge(SELF IN OUT type_str_agg,ctx2 IN type_str_agg) RETURN NUMBER ISBEGINSELF.total := SELF.total || ctx2.total;RETURN odciconst.success;END;END;/CREATE OR REPLACE FUNCTION f_stragg(p_input VARCHAR2) RETURN VARCHAR2 PARALLEL_ENABLEAGGREGATE USING type_str_agg;/。
Oracle中的常用数值、转换、字符串函数
Oracle中的常用数值、转换、字符串函数Oracle中的常用数值、转换、字符串函数数值函数:abs(m) m的绝对值mod(m,n) m被n除后的余数power(m,n) m的n次方round(m[,n]) m四舍五入至小数点后n位的值(n缺省为0)trunc(m[,n]) m截断n位小数位的值(n缺省为0)字符函数:initcap(st) 返回st将每个单词的首字母大写,所有其他字母小写lower(st) 返回st将每个单词的字母全部小写upper(st) 返回st将每个单词的字母全部大写concat(st1,st2) 返回st为st2接st1的末尾(可用操作符"||")lpad(st1,n[,st2]) 返回右对齐的st,st为在st1的左边用st2填充直至长度为n,st2的缺省为空格rpad(st1,n[,st2]) 返回左对齐的st,st为在st1的右边用st2填充直至长度为n,st2的缺省为空格ltrim(st[,set]) 返回st,st为从左边删除set中字符直到第一个不是set中的字符。
缺省时,指的是空格rtrim(st[,set]) 返回st,st为从右边删除set中字符直到第一个不是set中的字符。
缺省时,指的是空格replace(st,search_st[,replace_st]) 将每次在st中出现的search_st用replace_st替换,返回一个st。
缺省时,删除search_st substr(st,m[,n]) n=返回st串的子串,从m位置开始,取n个字符长。
缺省时,一直返回到st末端length(st) 数值,返回st中的字符数instr(st1,st2[,m[,n]]) 数值,返回st1从第m字符开始,st2第n次出现的位置,m及n的缺省值为1日期函数:add_months(d,n) 日期d加n个月last_day(d) 包含d的月份的最后一天的日期month_between(d,e) 日期d与e之间的月份数,e先于dnew_time(d,a,b) a时区的日期和时间d在b时区的日期和时间next_day(d,day) 比日期d晚,由day指定的周几的日期sysdate 当前的系统日期和时间greatest(d1,d2,...dn) 给出的日期列表中最后的日期least(d1,k2,...dn) 给出的日期列表中最早的日期to_char(d [,fmt]) 日期d按fmt指定的格式转变成字符串to_date(st [,fmt]) 字符串st按fmt指定的格式转成日期值,若fmt忽略,st要用缺省格式round(d [,fmt]) 日期d按fmt指定格式舍入到最近的日期trunc(d [,fmt]) 日期d按fmt指定格式截断到最近的日期附:分组函数:avg([distinct/all] n) 列n的平均值count([all] *) 返回查询范围内的行数包括重复值和空值count([distinct/all] n) 非空值的行数max([distinct/all] n) 该列或表达式的最大值min([distinct/all] n) 该列或表达式的最小值stdev([distinct/all] n) 该列或表达式的标准偏差,忽略空值sum([distinct/all] n) 该列或表达式的总和variance([distinct/all] n) 该列或表达式的方差,忽略空值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
“特殊字符” 假如特殊字符
HH24:MI:SS AM 15:43:20 PM
DD “OF” MONTH 12 OF OCTOBER
DDSPTH fourteenth
Date的格式 ’18-5月-84’
to_date('2008-12-01 00:00:00','yyyy-mm-dd hh24:mi:ss')
? 数字格式格式
9 代表一个数字
0 强制显示0
$ 放置一个$符
L 放置一个浮动本地示千位指示符 来
? 日期格式
格式控制 描述
YYYY、YYY、YY 分别代表4位、3位、2位的数字年
YEAR 年的拼写
to char 是把日期或数字转换为字符串
to date 是把字符串转换为数据库中得日期类型
? 转换函数
? TO_CHAR
使用TO_CHAR函数处理数字
TO_CHAR(number, '格式')
TO_CHAR(salary,’$99,999.99’);
使用TO_CHAR函数处理日期
TO_CHAR(date,’格式’);
? TO_NUMBER
使用TO_NUMBER函数将字符转换为数字
TO_NUMBER(char[, '格式'])
? TO_DATE
使用TO_DATE函数将字符转换为日期
TO_DATE(char[, '格式'])
MM 数字月
MONTH 月的全拼
MON 月的缩写
DD 数字日
DAY 星期的全拼
DY 星期的缩写
AM 表示上午或者下午
HH24、HH12 12小时制或24小时制
MI 分钟
SS 秒钟
SP 数字的拼写
TH 数字的序数词