oracle创建函数格式化,Oracle中的格式化函数

格式化函数提供一套有效的工具用于把各种数据类型(日期/时间,int,float,numeric)转换成格式化的字符串以及反过来从格式化的字符串转换成原始的数据类型。

表 5-6. 格式化函数

函数

返回

描述

例子

to_char(datetime, text)

text

把datetime 转换成 string

to_char('now'::datetime, 'hh12:mi:ss')

to_char(timestamp, text)

text

把 timestamp 转换成 string

to_char( 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(-125.8, '999d99s')

to_datetime(text, text)

datetime

把 string 转换成 datetime

to_datetime('05 dec 2000 13', 'dd mon yyyy hh')

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')

所有格式化函数都是 format-picture (格式图)的第二个参数。

表 5-7. 用于日期/时间 to_char() 版本的format-pictures。

format-picture

描述

hh

一天中的小时 (01-12)

hh12

一天中的小时 (01-12)

mi

分钟 (00-59)

ss

秒 (00-59)

ssss

过了午夜的秒 (0-86399)

y,yyy

带逗号的年 (4 或更多位)

yyyy

年 (4 或更多位)

yyy

年的最后三位

yy

年的最后两位

y

年的最后一位

month

完整的月份名(9字符)-所有字符大写

month

完整的月份名(9字符)-首字符大写

month

完整的月份名(9字符)-所有字符小写

mon

缩写的月份名(3字符)-所有字符大写

mon

缩写的月份名(3字符)-首字符大写

mon

缩写的月份名(3字符)-所有字符小写

mm

月份(01-12)

day

完整的日期名(9字符)-所有字符大写

day

完整的日期名(9字符)-首字符大写

day

完整的日期名(9字符)-所有字符小写

dy

缩写的日期名(3字符)-所有字符大写

dy

缩写的日期名(3字符)-首字符大写

dy

缩写的日期名(3字符)-所有字符小写

ddd

一年中的日子 (001-366)

dd

一月中的日子 (01-31)

d

一周中的日子 (1-7; sun=1)

w

月中的周

ww

年中的周

cc

世纪(两位)

j

julian 日子(从4712 bc 年一月一日以来的日子)

q

季度

rm

罗马数字的月份 (i-xii; i=jan)

所有 format-pictures (格式图)允许使用后缀(后缀/前缀)。对于近似 format-picture(格式图),后缀总是有效的。'fx'只是全局前缀。

表 5-8. 用于日期/时间 to_char() 版本的 format-pictures (格式图)后缀。

后缀

描述

例子

fm

填充模式-前缀

fmmonth

th

大写顺序数-前缀

ddth

th

小写顺序数-后缀

ddth

fx

fx - (固定模式)全局 format-picture (格式图)开关。如果没有使用这个选项 to_datetime / to_date 忽略空白。必须作为formt-picture(格式图)里的第一个项目使用。

fx month dd day

sp

拼写模式(目前未实现)

ddsp

'/' - 必须用做双 //,例如 '//hh//mi//ss'

'"' - 双引号之间的字串被忽略并且不被分析。如果你想向输出写 '"' 你必须用 //",例如 '//"yyyy month//"'。

text - postgresql 的 to_char() 支持不带 '"' 的文本,但是带有双引号的字串会快些并且可以保证该文本不会被解释成关键字(format-picture,格式图),例如 '"hello year: "yyyy'。

表 5-9. 用于数字 (int/float/numeric) to_char() 版本的format-pictures (格式图)。

格式图

描述

9

返回指定位数的值,如果不够位数用空白代替

0

象 9 一样,但是把空白替换成零

. (句点)

小数点

, (逗号)

分组(千进)分隔符

pr

在尖括号内返回负数

s

用负号返回负数(使用本地)

l

货币符号(使用本地)

d

小数点(使用本地)

g

分组符(使用本地)

mi

在指定位置返回负号(如果数字 < 0)

pl

在指定位置返回正号(如果数字 > 0) postgresql 扩展

sg

在指定位置返回正/负号(如果数字 < 0) - postgresql 扩展

rn

返回数字的罗马数字(数字必须介于1 和 3999之间)

th 或th

把数字转换成自然数(如果是负数或小数不转换) - postgresql 扩展

v

arg1 * (10 ^ n);- 返回一个乘以 10^n (这里 'n' 是'v'后面的数字 '9')。to_char() 不支持同时使用 'v' 和小数点,如 "99.9v99"。

eeee

科学记数,目前不支持。

注意:通过a sign formatted via 'sg','pl' 或 'mi' 格式化的符号数不一定是数字;to_char(-12, 's9999')生成:

' -12'

,但是 to_char(-12, 'mi9999')生成:

'- 12'

。oracle 不允许在 '9' 前面使用 'mi',在 oracle 里,它总是在 '9' 后面。.

表 5-10. 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" post-decimal:" .999')

'pre-decimal: 485 post-decimal: .800'

to_char( 12, '99v999')

' 12000'

to_char( 12.4, '99v999')

' 12400'

to_char( 12.45, '99v9')

' 125'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle数据库时间格式化 Oracle数据库存储时间的数据类型主要有DATE和TIMESTAMP两种。日期格式化是在SQL语句以to_char()函数的形式出现的。 DATE格式化Oracle数据库,DATE类型的数据存储日期和时间,日期的默认格式为YYYY-MM-DD,时间的默认格式为HH24:MI:SS。如果需要显示其他的格式,可以使用to_char()函数,语法如下: TO_CHAR(date, 'format') 其date是要格式化的日期,'format'是要显示的日期格式,其大写字母代表具体的日期字段,比如YYYY代表年份,MM代表月份,DD代表日期,HH24代表24小时制小时,MI代表分钟,SS代表秒。具体格式可以参考下表: Format | Description -------|------------- YYYY |四位数表示的年(例如:2018) YY |两位数表示的年(例如:18) MONTH |月的英文全称(例如:JANUARY) MON |月的英文缩写(例如:JAN) MM |表示月(例如:01) DAY |星期的英文全称(例如:MONDAY) DY |星期的英文缩写(例如:MON) DD |表示日(例如:01) HH24 |小时(例如:23) MI |分钟(例如:59) SS |秒(例如:59) AM/PM |表示AM或PM 例如,要将日期格式化为YYYY年MM月DD日,可以使用如下语句: SELECT TO_CHAR(sysdate, 'YYYY年MM月DD日') FROM dual; TIMESTAMP格式化 除了DATE类型,Oracle数据库还提供了TIMESTAMP类型,可以存储精确到毫秒或微秒的时间。TIMESTAMP类型,时间的默认格式为YYYY-MM-DD HH24:MI:SS.FF,如果需要显示其他的格式,也可以使用to_char()函数,只需在日期格式加上FFx,其x为要显示的位数,最长可以显示到9位,也可以使用TZD来显示时区,例如: SELECT TO_CHAR(CURRENT_TIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF1 TZD') FROM dual; 在上述语句,CURRENT_TIMESTAMP表示当前的时间戳,'FF1 TZD'表示显示到毫秒,并显示时区。 总之,日期格式化Oracle数据库非常灵活,可以根据需要随时调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值