to_char函数

合集下载

Oracle to

Oracle to

[导读]to_char,函数功能,就是将数值型或者日期型转化为字符型。

to_char,函数功能,就是将数值型或者日期型转化为字符型。

比如最简单的应用:Select TO_CHAR(1.0123) FROM DUALSelect TO_CHAR(123) FROM DUAL接下来再看看下面:SELEC TO_CHAR(0.123) FROM DUAL上面的结果'.123' 在大多数情况下都不是我们想要的结果,我们想要的应该是'0.123'。

我们来看一下to_char函数的具体用法:TO_CHAR ( n [, fmt [, 'nlsparam']] )该函数将NUMBER类型的n按数值格式fmt转换成V ARCHAR2类型的值。

'nlsparams'指定由数值格式的元素返回的字符,包括: .小数点字符.组分隔符.本地钱币符号.国际钱币符号变元的形式为:'NLS_NUMERIC_CHARACTERS="dg" NLS_CURRENCY="tcxt" NLS_ISO_CURRENCY=territory'其中d为小数点字符,g为组分隔符。

例:TO_CHAR (17145,'L099G999','NLS_NUMERIC_CHARACTERS=".," NLS_CURRENCY="NUD"')=NUD017,145通过上面的了解,再查看fmt的一些格式,我们可以用以下表达式得到'0.123'的值:Select TO_CHAR(0.123,'0.999') FROM DUALSelect TO_CHAR(100.12,'0.999') FROM DUALSelect TO_CHAR(1.12,'0.999') FROM DUAL' 0.123'是出来了,可是前面又多了一个空格。

ORACLE函数TO_CHAR以及数字转换格式[Z]

ORACLE函数TO_CHAR以及数字转换格式[Z]

ORACLE函数TO_CHAR以及数字转换格式[Z]本来这是很简单的函数,但在屡次忘记格式之后,决定还是翻译⼀遍以铭记在⼼。

参考<<Oracle Database SQL Reference>>.关于nls可有取值,请注意视图sys.V_$NLS_VALID_VALUES⼀,TO_CHAR(NUMBER)1.1 格式图和简单说明本函数把参数N转为⼀个VARCHAR2类型的数值。

N可以是NUMBER,BINARY_FLOAT,或者BINARY_DOUBLE。

如果不带格式,那么函数会把N转换为⾜以表⽰N的VARCHAR2字符串。

格式表参考:序号格式简例说明1 ,(逗号) '9999,999'逗号,⼀般以千分位出现,作为分组符号使⽤.如果需要您也可以当作是⼗分位,百分位出现,可以出现N次,视乎数字的⼤⼩⽽定.变态的例⼦是 to_char(1234,'9,9,9,9').注意事项:只能出现在整数部分.2 .(点号) '99.99'点号,不要念为"句号",句号是个圆圈,点好只能出现在⼩数点对应的地⽅.只能出现⼀次. to_char(1234.34,'9,9,9,9.99')注意事项:只能出现在⼀个地⽅,就是原来数据⼩数点位置3 $(美元符号) '$999.99'美元.其实你可以放在任意地⽅(在10G下) to_char(1234.34,'9,9,9,9.$99')注意事项:只能出现⼀次.4 0(零)'0999.99' 零.在对应位置返回对应的字符,如果没有则以'0'填充.to_char(0.34,'9,9,9,0.$99')='$0.34';to_char(1234,'9999.00')='1234.00';注意事项:这是⼀个强制的符号,对应位没有,则以'o'填充,这是9很⼤不同地⽅5 9'999.99' 9.在⼩数位,则表⽰转换为对应字符,如果没有则以0表⽰;在整数位,没有对应则不填充字符. to_char(123,'999.99')=123.00; TO_CHAR(123,'99999.9')=123.0;注意事项:对于0和9⽽⾔,如果格式的位数不如数字的位数多,会返回'#'.譬如to_char(12345,'9999')='#####'6 B(空格符) 'B999'没有其它特别作⽤,在整数部分最前⾯加⼀个空格,可以出现在任意位置. 'S'||TO_CHAR(1234,'99B99')='S 1234';注意事项:只能出现在整数部位.7 C(国际货币符号) 'C9999'在特定的位置返回⼀个ISO货币符号(就是NLS_ISO_CURRENCY参数所代表的值)TO_CHAR(1233,'C9999')='CNY1234' ,这是新的国际标准RMB,关于这个可查询"国际货币符号"注意事项:只能出现在整数部位第⼀位.可以通过alter session set NLS_ISO_CURRENCY='JAPAN';来修改当前会话的设置.8 D(ISO ⼩数位符号)'999D99'这是"点号"的国际版本(ISO),作⽤等同于点号,也是只能出现⼀次.所不同的是,数据库会根据NLS_NUMERIC_CHARACTER的参数值来设置内容.默认的这个值是点号.注意事项:没有特别需要⼀般不要⽤这个格式符号.也不要轻易修改参数值.也可⽤alter sesssion set 来修改.alter session set nls_numeric_characters='!,'; to_char(1234.34,'9999d99')=1234!349 EEEE(科学计算符) 9.9EEEE科学计算符号TO_CHAR(2008032001,'9.9EEEE')='2.01E+09',由于是科学计算⽅法,所以⼩数位前⾯加⼀个9或者0即可,多个是没有意义的.10 G(分组符号) 999G999是逗号(,)的的ISO标准,作为分组符号使⽤,可以放在多个地⽅使⽤.TO_CHAR(123456,'999G9G99')=123,4,56注意事项:同第⼋项 -D, 此外如果要转换出⼩数点,则要和D配合使⽤,不能和点号配合.11 L(本地货币符号)'L999'是C的本地版本.可以放在整个格式的最前⾯和最后⾯.TO_CHAR(123456,'999G9G99D00L')=123,4,56.00¥注意事项:同第七项 C12 MI(负号)'9999MI' 如果是负数,在尾部加上负号(-),如果是正数,则尾巴加上空格to_char(1234,'9999mi')||'S'||TO_CHAR(-5678,'9999MI') =1234 S5678-注意事项:只能放在格式尾巴13 PR(符号) 9999PR 是表达负数的另外⼀种⽅式.如果是正数,则头部加上空格;如果是负数,则⽤⼩简括号<>把数字包起来. TO_CHAR(-1234.89,'9G999D00PR')=<1,234.89>注意事项:同1214 RN(rn) RN(rn)把整数(1-3999)转换为罗马字符.RN表⽰转为⼤写,rn表⽰⼩写的. declarei int;beginfor i in 1..20 loopdbms_output.put_line(to_char(i,'RN'));end loop;end;注意事项:只能⾃⼰使⽤,不能和其它符号组合使⽤.15 S '9999S'是12,13的综合改进版本.为整数加⼀个正号+,为负数加⼀个符号-.S在前则加在前,在后则在后. TO_CHAR(-1234,'S9999')=-1234;TO_CHAR(1234,'S9999')=+123416 TM TM9/TMe 使⽤这个参数等于没有⽤参数to_char(number)⼀样,应为'tm9'是默认的格式参数. to_char(1234,'tme')=1234注意事项:格式要么是TM9,要么是TME.当数字长度超过64位时候,TM9的输出等同于TME的输出.17 U U999双币符号,例如欧元.作⽤同11的L TO_CHAR(999,'U999')=¥99917 U U999TO_CHAR(999,'U999')=¥999注意事项:通过NLS_DUAL_CURRENCY 控制18 V 999V9这是个⽐较古怪,⼜不是很常使⽤的符号。

Oracle中TO_DATE、TO_CHAR详解

Oracle中TO_DATE、TO_CHAR详解

TO_CHAR 是把日期或数字转换为字符串TO_DATE 是把字符串转换为数据库中得日期类型转换函数TO_NUMBER 将字符转化为数字? 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[, '格式'])? 数字格式格式9 代表一个数字0 强制显示0$ 放置一个$符L 放置一个浮动本地货币符. 显示小数点, 显示千位指示符? 日期格式格式控制描述YYYY、YYY、YY 分别代表4位、3位、2位的数字年YEAR 年的拼写MM 数字月MONTH 月的全拼MON 月的缩写DD 数字日DAY 星期的全拼DY 星期的缩写AM 表示上午或者下午HH24、HH12 12小时制或24小时制MI 分钟SS 秒钟SP 数字的拼写TH 数字的序数词“特殊字符” 假如特殊字符HH24:MI:SS AM 15:43:20 PM日期例子:SELECT TO_DATE('2006-05-01 19:25:34', 'YYYY-MM-DD HH24:MI:SS') FROM DUAL SELECT TO_DATE('2006-05-01 19:25', 'YYYY-MM-DD HH24:MI') FROM DUAL SELECT TO_DATE('2006-05-01 19', 'YYYY-MM-DD HH24') FROM DUALSELECT TO_DATE('2006-05-01', 'YYYY-MM-DD') FROM DUALSELECT TO_DATE('2006-05', 'YYYY-MM') FROM DUALSELECT TO_DATE('2006', 'YYYY') FROM DUAL日期说明:当省略HH、MI和SS对应的输入参数时,Oracle使用0作为DEFAULT值。

oracle时间格式(to_char、trunc函数的使用)

oracle时间格式(to_char、trunc函数的使用)

oracle时间格式(to_char、trunc函数的使⽤)1、oracle⾥的系统时间是sysdate,是date类型,执⾏select sysdate from dual,得到yyyy/mm/dd hh24:mi:ss形式的时间,oracle不区分⼤⼩写。

dual表是oracle实际存在的表,当sql强制某些数据必须从某表中获得,也就是说必须有from命令就可以使⽤dual。

yyyy代表年份,mm代表⽉份,dd代表天hh24代表24⼩时进制的时,如果没有24就是12⼩时进制的时,mi代表分钟(minute),不⽤mm代表分钟是因为mm已代表⽉份,ss代表秒数以2021/9/26 22:29:30时间为例,执⾏select to_char(sysdate,格式) from dual格式:显⽰值yy:21,后两位年yyy:021,后三位年yyyy:2021,四位年mm:09,如果要显⽰9可以执⾏ select EXTRACT(MONTH FROM sysdate) as MONTH_OF_YEAR from dualmon:9⽉,英⽂版显⽰sep(看英⽂版的时间可以select to_char(sysdate,格式,'NLS_DATE_LANGUAGE = American') from dual,也可以ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN' ,断开数据库连接之后,字符局还原为中⽂字符集,时间变为中⽂版)month:9⽉,英⽂版显⽰septemberd:1,⼀周中的第⼏天,星期天是第⼀天dd:26,当⽉的第⼏天ddd:269,当年的第⼏天dy:星期⽇,⼀周中的星期⼏,英⽂显⽰sunday:星期⽇,⼀周中的星期⼏,英⽂显⽰Sundayhh:10,12⼩时进制hh24:22,24⼩时进制mi:29ss:30q:3,当年的第⼏个季度w:4,当⽉的第⼏周ww:39,当年的第⼏周2、to_char()可以将⽇期转换成相应格式的时间格式,类型是char如select to_char(sysdate,'yyyymmdd') from dual,得到'20210925'select to_char(sysdate,'yyyy-mm-dd') from dual,得到'2021-09-25'3、trunc函数⽤法trunc()函数⽤于截取时间或数值,返回指定的值以2021/9/27 22:34:30时间为例,执⾏select trunc(sysdate,格式) from dual格式:显⽰值yyyy(yyy/yy):2021/1/1,显⽰当年第⼀天,截取到年,剩下的⽉⽇都默认为1mm(mon/month):2021/9/1,显⽰当⽉第⼀天,截取到⽉,剩下的⽇默认为1dd(ddd):2021/9/27,显⽰当前年⽉⽇,截取到⽇d(dy/day):2021/9/26,显⽰当前星期的第⼀天的年⽉⽇,如今天是星期⼀,就显⽰星期天的⽇期,因为星期天是这个星期的第⼀天 hh:2021/9/27 22:00:00,截取到⼩时,剩下的分秒默认为0mi:2021/9/27 22:34:00,截取到分钟,剩下的秒默认为0补充:trunc(number,decimals),截取数值,number是指需要截取的数字,decimal指截取的⼩数位数,默认为0select trunc(90.125) from dual,显⽰90,因为decimal为0select trunc(90.125,2) from dual,显⽰90.12,截取到两位⼩数select trunc(90.125,5) from dual,显⽰90.125,截取到三位⼩数,虽然decimal是5,但是只有三位⼩数。

Oracle 中的 TO_DATE 和 TO_CHAR 函数

Oracle 中的 TO_DATE 和 TO_CHAR 函数

1. 日期和字符转换函数用法(to_date,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_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss') from dual//2. select to_char( to_date(222,'J'),'Jsp') from dual显示Two Hundred Twenty-Two3. 求某天是星期几select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual;星期一selectto_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;monday设置日期语言ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';也可以这样TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American')4. 两个日期间的天数select floor(sysdate - to_date('20020405','yyyymmdd')) from dual;5. 时间为null的用法select id, active_date from table1UNIONselect 1, TO_DATE(null) from dual;注意要用TO_DATE(null)6.月份差a_date between to_date('20011201','yyyymmdd') andto_date('20011231','yyyymmdd')那么12月31号中午12点之后和12月1号的12点之前是不包含在这个范围之内的。

ORACLE函数TO_CHAR以及数字转换格式

ORACLE函数TO_CHAR以及数字转换格式
TO_CHAR(-1234.89,'9G999D00PR')=<1,234.89>
注意事项:同12
14 RN(rn) RN(rn) 把整数(1-3999)转换为罗马字符.RN表示转为大写,rn表示小写的.
declare
i int;
begin
for i in 1..20 loop
下表的格式基本上也都可以用于TO_DATE, TO_TIMESTAMP, TO_TIMESTAMP_TZ, TO_YMINTERVAL,
TO_DSINTERVAL函数。
序号
格式
简例
说明
1 - / Leabharlann . ; : "text" 略 时间分隔符号,除了标准的几个,还允许用文字作为分割符号。
本函数把参数N转为一个VARCHAR2类型的数值。N可以是NUMBER,BINARY_FLOAT,或者BINARY_DOUBLE。如果不带格式,那么函数会把N转换为足以表示N的VARCHAR2字符串。
格式表参考:
序号
格式 简例 说明
1 ,(逗号) '9999,999' 逗号,一般以千分位出现,作为分组符号使用.如果需要您也可以当作是十分位,百分位出现,可以出现N次,视乎数字的大小而定.
20 通过以上的例子,我们了解了各种数字的格式。可以说格式太多样,难于记在脑子,最好是作为一个参考存在着.
归类:
数值类: 0,9,
分组类: (.),(,),D,G ,其中点好和逗号因为表示不明显,所以用小括号凸显。
货币类: $,C,L,U
计算转换类:EEEE,RN,V,X
dbms_output.put_line(to_char(i,'RN'));

Oracle中常用的to_Char用法详解(有FMT的详细列表)

Oracle中常用的to_Char用法详解(有FMT的详细列表)

Oracle中常⽤的to_Char⽤法详解(有FMT的详细列表)以下内容转⾃⽹络,感觉这个⽐较有⽤。

收藏⼀下。

The following are number examples for the to_char function.to_char(1210.73, '9999.9')would return '1210.7'to_char(1210.73, '9,999.99')would return '1,210.73'to_char(1210.73, '$9,999.00')would return '$1,210.73'to_char(21, '000099')would return '000021'The following is a list of valid parameters when the to_char function is used to convert a date to a string. These parameters can be used in many combinations.Parameter ExplanationYEAR Year, spelled outYYYY4-digit yearYYYYYYLast 3, 2, or 1 digit(s) of year.IYYIYILast 3, 2, or 1 digit(s) of ISO year.IYYY4-digit year based on the ISO standardQ Quarter of year (1, 2, 3, 4; JAN-MAR = 1).MM Month (01-12; JAN = 01).MON Abbreviated name of month.MONTH Name of month, padded with blanks to length of 9 characters.RM Roman numeral month (I-XII; JAN = I).WW Week of year (1-53) where week 1 starts on the first day of the year and continues to the seventh day of the year.W Week of month (1-5) where week 1 starts on the first day of the month and ends on the seventh.IW Week of year (1-52 or 1-53) based on the ISO standard.D Day of week (1-7).DAY Name of day.DD Day of month (1-31). DDD Day of year (1-366).DY Abbreviated name of day.J Julian day; the number of days since January 1, 4712 BC.HH Hour of day (1-12).HH12Hour of day (1-12).HH24Hour of day (0-23).MI Minute (0-59).SS Second (0-59).SSSSS Seconds past midnight (0-86399). FF Fractional seconds.The following are date examples for the to_char function.to_char(sysdate, 'yyyy/mm/dd');would return '2003/07/09'to_char(sysdate, 'Month DD, YYYY');would return 'July 09, 2003'to_char(sysdate, 'FMMonth DD, YYYY');would return 'July 9, 2003'to_char(sysdate, 'MON DDth, YYYY');would return 'JUL 09TH, 2003'to_char(sysdate, 'FMMON DDth, YYYY');would return 'JUL 9TH, 2003'to_char(sysdate, 'FMMon ddth, YYYY');would return 'Jul 9th, 2003'You will notice that in some examples, the format_mask parameter begins with "FM". This means that zeros and blanks are suppressed. This can be seen in the examples below.to_char(sysdate, 'FMMonth DD, YYYY');would return 'July 9, 2003'to_char(sysdate, 'FMMON DDth, YYYY');would return 'JUL 9TH, 2003'to_char(sysdate, 'FMMon ddth, YYYY');would return 'Jul 9th, 2003'The zeros have been suppressed so that the day component shows as "9" as opposed to "09". Oracle函数to_char转化数字型指定⼩数点位数的⽤法to_char,函数功能,就是将数值型或者⽇期型转化为字符型。

Oracle中字符串转换函数to_char()的用法

Oracle中字符串转换函数to_char()的用法

Oracle中字符串转换函数to_char()的用法(2011-01-28 12:46:01)分类:专业知识标签:杂谈在PB程序中设计报表,涉及到数字格式的处理,由此想到了使用Oracle的函数to_char(),但是对小数的转换总是不理想,达不到预期目标,如果对0.75转换成字符串后就变成了‘.75’,郁闷了整天,看了2本Oracle书籍,上面对to_char()的介绍也是模糊其词,在网上到处搜索加上本人的悟性,最后终于把这个问题搞定了,使用to_char(0.75,'FM90.09'),终于把数字0.75原样转换成‘0.75’了。

经过本人的整理,to_char()函数的字符串转换格式归纳如下:to_char(var[,format]) 函数转换格式说明:1. [format] '999' N 为转换格式数字9的个数。

若数字var位数小于或等于转换格式数字9的个数,则转换后的字符串前面补空字符,凑足转换格式的位数+1 个位数;若数字var位数大于转换格式数字9的个数,则无法正确转换,转后的显示是N+1个# 号对于小数,只转换整数部分。

2.[format] '099' N为转换格式数字9和0的个数若数字var位数小于或等于转换格式数字9+0的个数,则转换后的字符串前面一个空字符和(N-var位数-1)个0,若数字var位数大于转换格式数字9+0的个数,则无法正确转换,转后的显示是N+1个# 号对于小数,只转换整数部分。

3.[format] '990'转换规则同(1)对于小数,只转换整数部分。

4.[format] '999.99' N1 为整数部分格式数字9的个数,N2为小数部分个数数字的个数数字var的整数部分转换规则同(1);小数部分若数字var位数小于N2,则小数部分补0,凑足N2的个数;若小数部分位数大于N2,则按照四舍五入截取N2个位数5.[format] '990.999'转换规则与(4)大致相同,区别在于(5)对于整数部分为0的小数处理更完善若:to_char(0.75,'999.99') = .75to_char(0.75,'990.99') = 0.756.[format] 'FM999'转换规则与(1)相同,但这个格式可以将转换后字符串前面的空格删除,可以说处理更完善7.[format] 'FM990.999'格式(5)和格式(6)的组合,小数部分不会自动添加0,因为‘FM’会把小数末尾的0当做空字符处理,删除掉8.[format] 'FM990.990'转换规则与(7)大致相同,不同之处在于,(8)格式中会在var小数部分位数小于转换格式小数部分时,在后面加0[format] '990.900' 与[format] '990.990' 相同9.[format] 'FM990.099' 或者'FM990.999' 2个格式相同对小数数字处理最完善的格式,可以将数字原样转换成字符串,当然整数部分位数不能小于数字var的整数部分位数10.[format] to_char(var)对整数数字处理最完善的格式,当然也可以用to_char(var,'FM99999999'),但是此方法有点多此一举,并且转换格式中9的个数要保证大于var的位数才能成功转换,否则转换不能成功。

pgsql sql标准函数

pgsql sql标准函数

pgsql sql标准函数一、简介PostgreSQL是一种流行的关系型数据库管理系统,支持SQL语言。

在PostgreSQL中,SQL标准函数是一种常用的工具,用于执行各种操作和计算。

本文档将介绍一些常用的pgsql SQL标准函数,帮助您更好地了解和使用这些函数。

1. 字符串函数(1)STRPOS(字符串,子串):返回子串在字符串中首次出现的位置。

(2)SUBSTRING(字符串,开始位置,长度):返回字符串中指定位置开始的指定长度的子串。

(3)REPLACE(字符串,旧子串,新子串):替换字符串中指定的旧子串为新子串。

(4)LOWER(字符串):将字符串转换为小写。

(5)UPPER(字符串):将字符串转换为大写。

2. 数据类型转换函数(1)CAST(数据类型表达式,表达式):将表达式转换为指定的数据类型。

(2)TO_CHAR(日期时间值):将日期时间值转换为字符串。

(3)TO_DATE(字符串,日期格式):将字符串转换为日期值。

(4)TO_TIMESTAMP(字符串,时间格式):将字符串转换为时间戳值。

3. 数学函数(1)ABS(数值表达式):返回数值表达式的绝对值。

(2)SIN(角度表达式):返回角度表达式的正弦值。

(3)COS(角度表达式):返回角度表达式的余弦值。

(4)TAN(角度表达式):返回角度表达式的正切值。

4. 聚合函数(1)COUNT(列名):返回指定列中非空值的个数。

(2)SUM(列名):返回指定列中所有值的总和。

(3)AVG(列名):返回指定列中所有值的平均值。

(4)MAX(列名):返回指定列中的最大值。

(5)MIN(列名):返回指定列中的最小值。

三、使用示例以下是一些使用pgsql SQL标准函数的示例:1. 使用STRPOS函数查找子串在字符串中的位置:SELECT STRPOS('hello world', 'world'); -- 返回 72. 使用SUBSTRING函数截取子串:SELECT SUBSTRING('hello world', 1, 5); -- 返回 'hello'3. 使用REPLACE函数替换字符串中的子串:SELECT REPLACE('hello world', 'world', 'everyone'); -- 返回 'hello everyone'4. 使用CAST函数将表达式转换为数据类型:SELECT CAST(5 AS INTEGER); -- 返回 55. 使用TO_CHAR函数将日期时间值转换为字符串:SELECT TO_CHAR(NOW(), 'YYYY-MM-DD HH24:MI:SS'); -- 返回当前日期时间字符串6. 使用聚合函数计算列的总和、平均值等:SELECT SUM(salary) FROM employees; -- 计算员工薪水的总和SELECT AVG(age) FROM customers; -- 计算客户年龄的平均值四、总结本文档介绍了常用的pgsql SQL标准函数,包括字符串函数、数据类型转换函数、数学函数和聚合函数等。

Oracle 中to_char和to_number等问题

Oracle 中to_char和to_number等问题

oracle to_number、to_char介绍to_number(文字,’格式’)to_char(数字, ‘格式’)to_char()这次只介绍to_char(数字, ‘格式’),明天介绍日期转化的。

主要格式如下:9 表示有效位数0 数字前用0补足位数B 用空格补足位数$ 在数字前加美元号L 在数字前加本地货币符号. 小数点位置, 分格符位置MI 负数时在最后边加负号PR 负数用<>括起来S 在前面加符号EEEE 科学计数法V 把原数字乘以10的N次方(N为V后面的位数)to_number函数如下:一时间到1994年1月1日00:00:00的秒数传入当做参数,然后将starttime转换成16进制,再通过to_number转换成数字,然后再比较。

SQL语句如下:select * from black_user_info where TO_NUMBER(rawtohex(starttime),'XXXXXXXX') >496022400;但是经过测试发现select * from black_user_info whereTO_NUMBER(starttime,'XXXXXXXX') >496022400 好像也有同样的效果。

raw类型和16进制有很密切的关系,因为在数据库里面,数字的raw类型就是按照16进制保存的,具体的关系就不是很清楚了,目前基本上一个ORACLE盲。

1. 9,0 ,B 测试SELECTto_char(123.45,'0009.9'),to_char(123.45,'9999.9'),to_char(123.45,'B999.9')FROM dual;结果为TO_CHAR(123.45,'0009.9') TO_CHAR(123.45,'9999.9')TO_CHAR(123.45,'B999.9')------------------------ ------------------------------------------------0123.5 123.5 123.52. $,L 测试SELECTto_char(123.45,'$9999.9'),to_char(123.45,'L9999.9')FROM dual;结果为TO_CHAR(123.45,'$9999.9') TO_CHAR(123.45,'L9999.9')------------------------- -------------------------$123.5 ¥123.53. .,, 测试SELECTto_char(123.45,'9999.99'),to_char(1233123.45,'9,999,999.99')FROM dual;结果为TO_CHAR(123.45,'9999.99') TO_CHAR(1233123.45,'9,999,999.------------------------- ------------------------------123.45 1,233,123.454. MI,PR 测试SELECTto_char(-123.45,'9999.99MI'),to_char(-123.45,'9999.99PR')FROM dual;结果为TO_CHAR(-123.45,'9999.99MI') TO_CHAR(-123.45,'9999.99PR')---------------------------- ----------------------------123.45- <123.45>5. S,EEEE,V 测试SELECTto_char(123.45,'S9999.99'),to_char(12345,'99.99EEEE'),to_char(123,'9999V99')FROM dual;结果为TO_CHAR(123.45,'S9999.99') TO_CHAR(12345,'99.99EEEE')TO_CHAR(123,'9999V99')-------------------------- ------------------------------------------------+123.45 1.23E+04 12300。

Oracle 中to_char和to_number和to_date教程

Oracle 中to_char和to_number和to_date教程

TO_CHAR 是把日期或数字转换为字符串TO_DATE 是把字符串转换为数据库中得日期类型转换函数TO_NUMBER 将字符转化为数字" 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[, '格式'])"数字格式格式9 代表一个数字0 强制显示0$ 放置一个$符L 放置一个浮动本地货币符. 显示小数点, 显示千位指示符"日期格式格式控制描述YYYY、YYY、YY 分别代表4位、3位、2位的数字年YEAR 年的拼写MM 数字月MONTH 月的全拼MON 月的缩写DD 数字日DAY 星期的全拼DY 星期的缩写AM 表示上午或者下午HH24、HH12 12小时制或24小时制MI 分钟SS 秒钟SP 数字的拼写TH 数字的序数词“特殊字符” 假如特殊字符HH24:MI:SS AM 15:43:20 PM日期例子:SELECT TO_DATE('2006-05-01 19:25:34', 'YYYY-MM-DD HH24:MI:SS') FROM DUAL SELECT TO_DATE('2006-05-01 19:25', 'YYYY-MM-DD HH24:MI') FROM DUALSELECT TO_DATE('2006-05-01 19', 'YYYY-MM-DD HH24') FROM DUALSELECT TO_DATE('2006-05-01', 'YYYY-MM-DD') FROM DUALSELECT TO_DATE('2006-05', 'YYYY-MM') FROM DUALSELECT TO_DATE('2006', 'YYYY') FROM DUAL日期说明:当省略HH、MI和SS对应的输入参数时,Oracle使用0作为DEFAULT值。

to_char函数将number转成string

to_char函数将number转成string

很多数据转换处理操作时,会遇到将0.007007040000转换成0.70%的需求,我们使用Oracle 的SQL 函数to_char可以实现这种转换,需要了解的同学可以参考下-这个函数用来将DA TE或NUMBER数据类型转换成可显示的字符串,格式是to_char(number_type, format_mask)。

格式'999.99',9表示对应的某一个指定位数的值,如果是值是0则忽略不显示,如果指定位数没有值,则以空格表示。

格式'0990.990',0表示对应的某一个指定位数的值,如果是值是0则显示为0,如果是没有值也显示为0。

格式'FM990.90',FM表示将显示出来的字符串定位数没有值而显示的空格清理掉,作用和ltrim类似。

代码如下:SQL> select to_char(12304.560,'999.99') from dual;TO_CHAR(12304.560,'999.99')---------------------------#######SQL> select to_char(104.560,'999.99') from dual;TO_CHAR(104.560,'999.99')-------------------------104.56SQL> select to_char(104.560,'99999.99') from dual;TO_CHAR(104.560,'99999.99')---------------------------104.56SQL> select to_char(104.560,'99999.990') from dual;TO_CHAR(104.560,'99999.990')----------------------------104.560SQL> select to_char(104.560,'0099.990') from dual;TO_CHAR(104.560,'0099.990')---------------------------0104.560代码如下:SQL>SQL> select to_char(round(0.007007040000, 4) * 100, 'FM99999999990.90') || '%' as aa,2 length(to_char(round(0.007007040000, 4) * 100, 'FM99999999990.90') || '%') as bb3 from dual;AA BB---------------- ----------0.70% 5SQL>SQL> select to_char(round(0.007007040000, 4) * 100, '99999999990.90') || '%' as aa,2 length(to_char(round(0.007007040000, 4) * 100, '99999999990.90') || '%') as bb3 from dual;AA BB---------------- ----------0.70% 16这是to_char将数字转换成字符串的常见操作功能,还有其他一些格式,见to_char(numeric)的格式模板。

oracle的tochar函数

oracle的tochar函数

oracle的tochar函数
【原创实用版】
目录
1.Oracle 的 tochar 函数概述
2.tochar 函数的用途
3.tochar 函数的基本语法
4.tochar 函数的示例用法
5.tochar 函数在实际场景中的应用
正文
Oracle 的 tochar 函数是一种将数字或日期转换为字符串的函数,它可以将数字或日期按照指定的格式转换为字符串,从而方便地进行数据处理和显示。

tochar 函数的用途主要体现在以下几个方面:
1.将数字转换为字符串:可以使用 tochar 函数将数字转换为指定格式的字符串,例如将薪资数据转换为特定格式的字符串以方便显示。

2.将日期转换为字符串:可以使用 tochar 函数将日期转换为指定格式的字符串,例如将日期转换为"yyyy-mm-dd"格式的字符串以方便比较和统计。

tochar 函数的基本语法如下:
```
TOCHAR(value, format)
```
其中,`value`表示需要转换的数字或日期,`format`表示转换后的字符串格式。

postgres timestamp 转date -回复

postgres timestamp 转date -回复

postgres timestamp 转date -回复如何将PostgreSQL 的timestamp 转换为date 。

PostgreSQL 是一款功能强大的关系型数据库管理系统,常用于存储和管理大型数据集。

其中,timestamp 类型用于存储日期和时间的值,而date 类型仅存储日期值。

当我们需要从timestamp 类型提取日期信息时,可以使用PostgreSQL 提供的各种函数和操作符来实现。

本文将指导您一步一步将PostgreSQL 的timestamp 类型转换为date 类型。

让我们开始吧!第一步:了解timestamp 和date 类型的特点在进行转换之前,我们需要了解timestamp 和date 类型的特点,以便更好地理解它们之间的转换过程。

- timestamp 类型用于存储日期和时间信息,其格式为'YYYY-MM-DD HH:MI:SS'。

- date 类型仅存储日期信息,其格式为'YYYY-MM-DD'。

第二步:使用CAST 函数进行转换在PostgreSQL 中,可以使用CAST 函数将timestamp 类型转换为date 类型。

CAST 函数的基本语法如下:CAST(expression AS data_type)其中,expression 表示要转换的值,而data_type 表示要转换的目标数据类型。

接下来,我们将使用CAST 函数将timestamp 类型转换为date 类型,示例如下:SELECT CAST(timestamp_column AS date) FROM table_name;在上述示例中,timestamp_column 是要转换的timestamp 列的名称,而table_name 是包含该列的表名。

通过执行上述查询,可以得到一个包含转换后日期值的结果集。

第三步:使用EXTRACT 函数提取日期信息除了使用CAST 函数外,我们还可以使用EXTRACT 函数从timestamp 值中提取日期信息。

hologres查询decimal变成科学计数法 -回复

hologres查询decimal变成科学计数法 -回复

hologres查询decimal变成科学计数法-回复如何将Hologres查询中的Decimal变成科学计数法在数据分析和处理过程中,我们经常会遇到需要对数字进行精确计算和处理的情况。

Decimal类型是一种十进制浮点数,被广泛用于处理财务数据、科学计算和精确金额等场景。

然而,在某些情况下,我们可能需要将Decimal类型的数字转换为科学计数法,以便更好地展示和解释数据结果。

本文将介绍如何在Hologres查询中将Decimal类型的数字转换为科学计数法。

第一步:了解Decimal类型和科学计数法在开始转换Decimal类型的数字之前,我们首先要了解Decimal类型和科学计数法的定义和特性。

Decimal类型是一种精确的十进制浮点数表示方法,由整数部分和小数部分组成。

科学计数法是一种用于表示非常大或非常小的数字的方法,它将数字转换为一个系数和一个指数的乘积,其中系数通常位于1和10之间。

第二步:使用CAST函数将Decimal类型转换为科学计数法在Hologres中,我们可以使用CAST函数将Decimal类型的数字转换为科学计数法。

CAST函数是一种类型转换函数,它可以将一个数据类型转换为另一个数据类型。

以下是使用CAST函数将Decimal类型转换为科学计数法的示例:SELECT CAST(12345.6789 AS DECIMAL(10,4)) ASscientific_notation;在上述示例中,我们将Decimal类型的数字12345.6789转换为科学计数法,并将结果命名为scientific_notation。

在查询结果中,我们将以科学计数法的形式显示转换后的数字。

第三步:使用FORMAT函数定制科学计数法的显示格式在默认情况下,Hologres将使用标准的科学计数法格式显示转换后的数字。

然而,有时我们可能希望对科学计数法的显示格式进行一定的定制,以满足特定的展示需求。

Hologres提供了FORMAT函数,可以帮助我们对科学计数法的显示格式进行定制。

postgres sql 中的 时间格式转化常识

postgres sql 中的 时间格式转化常识

postgres sql 中的时间格式转化常识摘要:I.引言- 介绍PostgreSQL中的时间格式转化- 说明时间格式转化在数据处理中的重要性II.PostgreSQL中的时间格式- 介绍PostgreSQL中的日期和时间数据类型- 讲解如何使用to_char和to_timestamp函数进行时间格式转化III.时间格式转化示例- 演示如何将日期时间数据转换为特定格式- 展示如何将字符串转换为日期时间数据IV.总结- 强调时间格式转化在PostgreSQL中的应用- 提醒读者注意数据类型和函数的匹配问题正文:PostgreSQL是一款功能强大的关系型数据库管理系统,广泛应用于各种数据处理场景。

在数据处理过程中,日期和时间的格式转化是非常常见的操作。

本文将介绍PostgreSQL中的时间格式转化常识,帮助读者更好地理解和使用这一功能。

首先,我们需要了解PostgreSQL中的日期和时间数据类型。

在PostgreSQL中,常用的日期和时间数据类型包括:SMALLDATETIME、DATETIME、DATE、TIME和TIMESTAMP等。

这些数据类型具有不同的精度和范围,适用于不同的应用场景。

在PostgreSQL中,我们可以使用to_char和to_timestamp函数进行时间格式转化。

to_char函数用于将日期时间数据转换为特定格式的字符串,而to_timestamp函数则用于将字符串转换为日期时间数据。

这两个函数都具有很高的灵活性,可以满足各种格式转换需求。

下面,我们通过几个示例来演示如何进行时间格式转化。

首先,假设我们有一个包含日期时间数据的表格,如下所示:```CREATE TABLE dates (id SERIAL PRIMARY KEY,date_time TIMESTAMP);```我们可以使用to_char函数将日期时间数据转换为特定格式的字符串,例如:```SELECT to_char(date_time, "YYYY-MM-DD HH24:MI:SS") AS formatted_dateFROM dates;```这个查询将返回一个格式化后的日期时间字符串,例如:`2022-07-2914:30:59`。

to_char函数官方文档详解(数字格式转换和日期转换)

to_char函数官方文档详解(数字格式转换和日期转换)

to_char函数官⽅⽂档详解(数字格式转换和⽇期转换)⼀,TO_CHAR(NUMBER)本函数把参数N转为⼀个VARCHAR2类型的数值。

N可以是NUMBER,BINARY_FLOAT,或者BINARY_DOUBLE。

如果不带格式,那么函数会把N转换为⾜以表⽰N的VARCHAR2字符串。

格式表参考:序号格式简例说明1 ,(逗号) '9999,999'逗号,⼀般以千分位出现,作为分组符号使⽤.如果需要您也可以当作是⼗分位,百分位出现,可以出现N次,视乎数字的⼤⼩⽽定.变态的例⼦是 to_char(1234,'9,9,9,9').注意事项:只能出现在整数部分.2 .(点号) '99.99'点号,不要念为"句号",句号是个圆圈,点好只能出现在⼩数点对应的地⽅.只能出现⼀次. to_char(1234.34,'9,9,9,9.99')注意事项:只能出现在⼀个地⽅,就是原来数据⼩数点位置3 $(美元符号) '$999.99'美元.其实你可以放在任意地⽅(在10G下) to_char(1234.34,'9,9,9,9.$99')注意事项:只能出现⼀次.4 0(零)'0999.99' 零.在对应位置返回对应的字符,如果没有则以'0'填充.to_char(0.34,'9,9,9,0.$99')='$0.34';to_char(1234,'9999.00')='1234.00';注意事项:这是⼀个强制的符号,对应位没有,则以'o'填充,这是9很⼤不同地⽅5 9'999.99' 9.在⼩数位,则表⽰转换为对应字符,如果没有则以0表⽰;在整数位,没有对应则不填充字符. to_char(123,'999.99')=123.00; TO_CHAR(123,'99999.9')=123.0;注意事项:对于0和9⽽⾔,如果格式的位数不如数字的位数多,会返回'#'.譬如to_char(12345,'9999')='#####'6 B(空格符) 'B999'没有其它特别作⽤,在整数部分最前⾯加⼀个空格,可以出现在任意位置. 'S'||TO_CHAR(1234,'99B99')='S 1234';注意事项:只能出现在整数部位.7 C(国际货币符号) 'C9999'在特定的位置返回⼀个ISO货币符号(就是NLS_ISO_CURRENCY参数所代表的值)TO_CHAR(1233,'C9999')='CNY1234' ,这是新的国际标准RMB,关于这个可查询"国际货币符号"注意事项:只能出现在整数部位第⼀位.可以通过alter session set NLS_ISO_CURRENCY='JAPAN';来修改当前会话的设置.8 D(ISO ⼩数位符号)'999D99'这是"点号"的国际版本(ISO),作⽤等同于点号,也是只能出现⼀次.所不同的是,数据库会根据NLS_NUMERIC_CHARACTER的参数值来设置内容.默认的这个值是点号.注意事项:没有特别需要⼀般不要⽤这个格式符号.也不要轻易修改参数值.也可⽤alter sesssion set 来修改.alter session set nls_numeric_characters='!,'; to_char(1234.34,'9999d99')=1234!349 EEEE(科学计算符)9.9EEEE科学计算符号TO_CHAR(2008032001,'9.9EEEE')='2.01E+09',由于是科学计算⽅法,所以⼩数位前⾯加⼀个9或者0即可,多个是没有意义的.10 G(分组符号) 999G999是逗号(,)的的ISO标准,作为分组符号使⽤,可以放在多个地⽅使⽤.TO_CHAR(123456,'999G9G99')=123,4,56注意事项:同第⼋项 -D, 此外如果要转换出⼩数点,则要和D配合使⽤,不能和点号配合.11 L(本地货币符号)'L999'是C的本地版本.可以放在整个格式的最前⾯和最后⾯.TO_CHAR(123456,'999G9G99D00L')=123,4,56.00¥注意事项:同第七项 C12 MI(负号)'9999MI' 如果是负数,在尾部加上负号(-),如果是正数,则尾巴加上空格to_char(1234,'9999mi')||'S'||TO_CHAR(-5678,'9999MI') =1234 S5678-注意事项:只能放在格式尾巴13 PR(符号) 9999PR 是表达负数的另外⼀种⽅式.如果是正数,则头部加上空格;如果是负数,则⽤⼩简括号<>把数字包起来. TO_CHAR(-1234.89,'9G999D00PR')=<1,234.89>注意事项:同1214 RN(rn) RN(rn)把整数(1-3999)转换为罗马字符.RN表⽰转为⼤写,rn表⽰⼩写的. declarei int;beginfor i in 1..20 loopdbms_output.put_line(to_char(i,'RN'));end loop;end;注意事项:只能⾃⼰使⽤,不能和其它符号组合使⽤.15 S '9999S'是12,13的综合改进版本.为整数加⼀个正号+,为负数加⼀个符号-.S在前则加在前,在后则在后.TO_CHAR(-1234,'S9999')=-1234;TO_CHAR(1234,'S9999')=+123416 TM TM9/TMe 使⽤这个参数等于没有⽤参数to_char(number)⼀样,应为'tm9'是默认的格式参数. to_char(1234,'tme')=1234注意事项:格式要么是TM9,要么是TME.当数字长度超过64位时候,TM9的输出等同于TME的输出.17 U U999双币符号,例如欧元.作⽤同11的LTO_CHAR(999,'U999')=¥999注意事项:通过NLS_DUAL_CURRENCY 控制这是个⽐较古怪,⼜不是很常使⽤的符号。

SQL转换函数to_charto_dateto_number

SQL转换函数to_charto_dateto_number

SQL转换函数to_charto_dateto_number⽇期型->字符型转换函数to_char(d [,fmt]) 函数to_char(d [,fmt])⽤于将⽇期型数值转换为字符串(varchar2类型),其中参数d⽤于指定⽇期值,fmt⽤于指定要转换成的字符串的格式,也称模式串。

如不给出参数fmt则系统会缺省采⽤与所在语⾔环境相关的默认格式。

模式串中的字母(a~z, A~Z)也称⽇期模式符,被保留使⽤——相当于关键字,其中⼤部分被赋予特定含义,在对⽇期型数字的转换/解析过程中这些模式符将被替换成相应的时间域信息,表4-5列出了常⽤格式符及其含义。

常⽤⽇期模式符格式符说明举例yyyy 年份 2008mm ⽤数字显⽰⽉份 02dd 在当⽉中是第⼏天 28day 星期⼏星期五am / pm 显⽰上午/下午上午hh / hh12 / hh24 ⼩时 / 12⼩时制 / 24⼩时制 2:30 14:30mi 分钟 30ss 秒钟 46SELECT EMPNO,HIREDATE,TO_CHAR(HIREDATE),TO_CHAR(HIREDATE,'YYYY-MM-DD') FROM EMP;EMPNO HIREDATE TO_CHAR(HIREDATE) TO_CHAR(HIREDATE,'YYYY-MM-DD')7369 1980/12/17 17-DEC-80 1980-12-177499 1981/2/20 20-FEB-81 1981-02-207521 1981/2/22 22-FEB-81 1981-02-227566 1981/4/2 02-APR-81 1981-04-027654 1981/9/28 28-SEP-81 1981-09-287698 1981/5/1 01-MAY-81 1981-05-017782 1981/6/9 09-JUN-81 1981-06-097788 1987/4/19 19-APR-87 1987-04-197839 1981/11/17 17-NOV-81 1981-11-177844 1981/9/8 08-SEP-81 1981-09-087876 1987/5/23 23-MAY-87 1987-05-237900 1981/12/3 03-DEC-81 1981-12-037902 1981/12/3 03-DEC-81 1981-12-037934 1982/1/23 23-JAN-82 1982-01-23SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH:MI:SS') FROM DUAL; --2014-06-14 05:54:50SELECT TO_CHAR(SYSDATE,'YYYY/MM/DD HH:MI:SS') FROM DUAL; --2014/06/14 05:54:38SELECT TO_CHAR(SYSDATE,'FMYYYY/MM/DD HH:MI:SS') FROM DUAL; --在模式串开头使⽤fm标记以去掉数字前⾯的零2014/6/14 5:55:56SELECT TO_CHAR(SYSDATE,'YYYY "YEAR" MM "MONTH" DD "WEEK" DAY AM HH:MI:SS') FROM DUAL --2014 YEAR 06 MONTH 14 WEEK SATURDAY PM 05:59:25 --2014 YEAR 06 MONTH 14 DAY SATURDAY PM 05:59:25 --------语句中输⼊的是AM,结果显⽰为PM?Oracle会智能判断应该显⽰什么?字符型->⽇期型转换函数to_date(char [,fmt]) 和前⾯的to_char()函数相对应,函数to_char(char[,fmt])⽤于将字符串型数值转换为⽇期型(DATE类型),其中参数char⽤于指定匹配于⽇期数据的字符串,模式串fmt⽤于指定⽇期模式、即按照何种模式解析前⾯的字符串,如不给出参数fmt则会按照当前语⾔环境相关的默认格式进⾏解析。

tochar函数

tochar函数

tochar函数
以ToChar函数为标题:ToChar函数是一种用于转换数据类型的内置函数,它可以将任何具有字符串表示的数据类型转换为字符或字符串。

它的主要特点是可以在没有定义变量值的情况下将任何类型的数据转换为字符。

ToChar()函数已经在很多程序设计语言中被实现,比如C、C#、JavaScript、PHP等等。

ToChar()函数可以将任何类型的数据转换为字符,它可以将数字、布尔值、日期、时间戳和字符串转换为字符。

它的实现方法是先将数据转换为ASCII代码,然后根据转换后的ASCII代码将字符存入字符串对象中。

的调用方式也很简单:在函数调用的参数中,只需要提供要转换的数据即可,然后它就会根据提供的参数,自动将它们转换为ASCII代码,最后将字符存入字符串对象中。

ToChar()函数可以将任何类型的数据转换为字符,它可以大大提高程序设计的效率,并且可以让我们更容易地运行一些复杂的程序逻辑。

因此,它在用户界面设计、移动应用开发、网站开发、软件测试等方面都有着广泛的应用。

另外,ToChar()函数也有一些不足之处,最主要的是它的安全性较差。

ToChar()函数的实现往往需要与不安全的外部资源交互,比如从文件读取数据,这就存在被恶意字符攻击的风险,因此,在使用它的时候,一定要注意检查输入字符,以保证程序的安全性。

最后,与其他程序设计语言相比,ToChar()函数在C、C#、JavaScript和PHP等程序设计语言中使用起来相对比较容易,可以
快速实现字符串转换,同时也可以有效提高程序的开发效率和安全性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

表5-7. 格式化函数
函数返回描述例子
to_char(timestamp, text) text 把timestamp
转换成string
to_char(timestamp
'now','HH12:MI:SS')
to_char(int, text) text 把int4/int8 转
换成string
to_char(125, '999')
to_char(float, text) text 把float4/float8
转换成string
to_char(125.8, '999D9')
to_char(numeric, text) text 把numeric 转换
成string
to_char(numeric '-125.8',
'999D99S')
to_date(text, text) date 把string 转换成
date to_date('05 Dec 2000', 'DD Mon YYYY')
to_timestamp(text, text) date 把string 转换成
timestamp
to_timestamp('05 Dec 2000',
'DD Mon YYYY')
to_number(text, text) numeric 把string 转换成
numeric to_number('12,454.8-', '99G999D9S')
表5-8. 用于date/time 转换的模板
模板描述
HH 一天的小时数(01-12) HH12 一天的小时数(01-12) HH24 一天的小时数(00-23) MI 分钟(00-59)
SS 秒(00-59)
SSSS 午夜后的秒(0-86399) AM or A.M. or PM or P.M. 正午标识(大写)
am or a.m. or pm or p.m. 正午标识(小写)
Y,YYY 带逗号的年(4 和更多位)YYYY 年(4和更多位)
YYY 年的后三位
YY 年的后两位
Y 年的最后一位
BC or B.C. or AD or A.D. 年标识(大写)
bc or b.c. or ad or a.d. 年标识(小写)
用法须知:
∙如果没有使用FX选项,to_timestamp和to_date忽略空白。

FX必须做为模板里的第一个条目声明。

∙反斜杠("\")必须用做双反斜杠("\\"),例如'\\HH\\MI\\SS'。

∙双引号('"')之间的字串被忽略并且不被分析。

如果你想向输出写双引号,你必须在双引号前面放置一个双反斜杠('\\'),例如'\\"YYYY Month\\"'。

∙to_char支持不带前导双引号('"')的文本,但是在双引号之间的任何字串会被迅速处理并且还保证不会被当作模板关键字解释(例如:'"Hello Year: "YYYY')。

表5-10. 用于to_char(numeric) 的模板
模板描述
9 带有指定位数的值
0 前导零的值
. (句点)小数点
, (逗号)分组(千)分隔符
PR 尖括号内负值
S 带负号的负值(使用本地化)
L 货币符号(使用本地化)
D 小数点(使用本地化)
G 分组分隔符(使用本地化)
MI 在指明的位置的负号(如果数字< 0)
PL 在指明的位置的正号(如果数字> 0)
SG 在指明的位置的正/负号
RN 罗马数字(输入在1 和3999 之间)
TH or th 转换成序数
V 移动n位(小数)(参阅注解)
EEEE 科学记数。

现在不支持。

用法须知:
∙使用'SG','PL' 或'MI' 的带符号字并不附着在数字上面;例如,to_char(-12, ' S9999') 生成' -12',而to_char(-12, 'MI9999') 生成'- 12'。

Oracle里的实现不允许在9前面使用MI,而是要求9在MI前面。

∙PL,SG,和TH是 Postgres 扩展。

∙9表明一个与在9字串里面的一样的数字位数。

如果没有可用的数字,那么使用一个空白(空格)。

∙TH不转换小于零的值,也不转换小数。

TH是一个 Postgres 扩展。

∙V方便地把输入值乘以10^n,这里n是跟在V后面的数字。

to_char不支持把V与一个小数点绑在一起使用(例如. "99.9V99" 是不允许的)。

表5-11. to_char例子
输入输出
to_char(now(),'Day, HH12:MI:SS') 'Tuesday , 05:39:18' to_char(now(),'FMDay, HH12:MI:SS') 'Tuesday, 05:39:18' to_char(-0.1,'99.99') ' -.10'
to_char(-0.1,'FM9.99') '-.1'
to_char(0.1,'0.9') ' 0.1'
to_char(12,'9990999.9') ' 0012.0'
to_char(12,'FM9990999.9') '0012'
to_char(485,'999') ' 485'
to_char(-485,'999') '-485'
to_char(485,'9 9 9') ' 4 8 5'
to_char(1485,'9,999') ' 1,485'
to_char(1485,'9G999') ' 1 485'
to_char(148.5,'999.999') ' 148.500'
to_char(148.5,'999D999') ' 148,500'
to_char(3148.5,'9G999D999') ' 3 148,500'
to_char(-485,'999S') '485-'
to_char(-485,'999MI') '485-'
to_char(485,'999MI') '485'
to_char(485,'PL999') '+485'
to_char(485,'SG999') '+485'
to_char(-485,'SG999') '-485'
to_char(-485,'9SG99') '4-85'
to_char(-485,'999PR') '<485>'
to_char(485,'L999') 'DM 485
to_char(485,'RN') ' CDLXXXV'
to_char(485,'FMRN') 'CDLXXXV'
to_char(5.2,'FMRN') V
to_char(482,'999th') ' 482nd'
to_char(485, '"Good number:"999') 'Good number: 485' to_char(485.8,'"Pre-decimal:"999" 'Pre-decimal: 485。

相关文档
最新文档