数据类型格式化函数

云原生数据仓库 AnalyticDB PostgreSQL 版兼容PostgreSQL数据类型格式化函数。本文简单列举云原生数据仓库 AnalyticDB PostgreSQL 版兼容的数据类型格式化函数。

数据类型格式化函数可以将不同类型的数据转换为指定的格式化字符串,或者将格式化的字符串转换成不同类型的数据。PostgreSQL数据类型格式化函数的详细使用方法,请参见PostgreSQL官方文档:数据类型格式化函数

格式化函数

函数

返回类型

描述

例子

to_char(timestamp,text)

text

把时间戳转成字符串。

to_char(current_timestamp, 'HH12:MI:SS')

to_char(interval,text

)

text

把间隔转成字符串。

to_char(interval '15h 2m 12s', 'HH24:MI:SS')

to_char(int,text)

text

把整数转成字符串。

to_char(125, '999')

to_char(double precision,text)

text

把实数或双精度转成字符串。

to_char(125.8::real, '999D9')

to_char(numeric,text)

text

把数字转成字符串。

to_char(-125.8, '999D99S')

to_date(text,text)

date

把字符串转成日期。

to_date('05 Dec 2000', 'DD Mon YYYY')

to_number(text,text)

numeric

把字符串转成数字。

to_number('12,454.8-', '99G999D9S')

to_timestamp(text,text)

timestamp with time zone

把字符串转成时间戳。

to_timestamp('05 Dec 2000', 'DD Mon YYYY')

用于日期、时间格式化模板模式

模式

描述

HH

一天中的小时 (01-12)。

HH12

一天中的小时 (01-12)。

HH24

一天中的小时 (00-23)。

MI

分钟 (00-59)。

SS

秒(00-59)。

MS

毫秒(000-999)。

US

微秒(000000-999999)。

SSSS

凌晨后的秒(0-86399)。

AM,am,PMorpm

正午指示器(不带句号)。

A.M.,a.m.,P.M.orp.m.

正午指示器(带句号)。

Y,YYY

带千位分隔符的年(4位或者更多位)。

YYYY

年(4位或者更多位)。

YYY

年的后三位。

YY

年的后两位。

Y

年的最后一位。

IYYY

ISO 8601 周编号方式的年(4位或更多位)。

IYY

ISO 8601 周编号方式的年的最后3位。

IY

ISO 8601 周编号方式的年的最后2位。

I

ISO 8601 周编号方式的年的最后1位。

BC,bc,AD或者ad

公元指示器(不带句号)。

B.C.,b.c.,A.D.或者a.d.

公元指示器(带句号)。

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

IDDD

ISO 8601 周编号方式的年中的日(001-371,年的第1日时第一个ISO周的周一)。

DD

月中的日(01-31)。

D

周中的日,周日(1)到周六(7)。

ID

周中的 ISO 8601 日,周一(1)到周日(7)。

W

月中的周(1-5)(第一周从该月的第一天开始)。

WW

年中的周数(1-53)(第一周从该年的第一天开始)。

IW

ISO 8601 周编号方式的年中的周数(01~53,新的一年的第一个周四在第一周)。

CC

世纪(2位数)(21世纪开始于2001-01-01)。

J

儒略日(从午夜UTC的公元前4714年11月24日开始的整数日数)。

Q

季度(to_date和to_timestamp会忽略)。

RM

大写形式的罗马计数法的月(I-XII;I 是一月)。

rm

小写形式的罗马计数法的月(i-xii;i 是一月)。

TZ

大写形式的时区缩写(仅在to_char中支持)。

tz

小写形式的时区缩写(仅在to_char中支持)。

TZH

时区的小时。

TZM

时区的分钟。

OF

从UTC开始的时区偏移(仅在to_char中支持)。

用于日期、时间格式化的模板模式修饰语

修饰语

描述

例子

FM prefix

填充模式(抑制前导零和填充的空格)。

FMMonth

TH suffix

大写形式的序数后缀。

DDTH,e.g.,12TH

th suffix

小写形式的序数后缀。

DDth,e.g.,12th

FX prefix

固定的格式化全局选项。

FX Month DD Day

TM prefix

翻译模式(基于lc_time打印本地化的日和月名)。

TMMonth

SP suffix

拼写模式(未实现)。

DDSP

用于数字格式化的模板模式

模式

描述

9

数位(如果无意义可以被删除)。

0

数位(即便没有意义也不会被删除)。

.(period)

小数点。

,(comma)

分组(千)分隔符。

PR

尖括号内的负值。

S

带符号的数字(使用区域)。

L

货币符号(使用区域)。

D

小数点(使用区域)。

G

分组分隔符(使用区域)。

MI

在指定位置的负号(如果数字 < 0)。

PL

在指定位置的正号(如果数字 > 0)。

SG

在指定位置的正/负号。

RN

罗马数字(输入在1和3999之间)。

TH or th

序数后缀。

V

移动指定位数。

EEEE

科学记数的指数。

用于数字格式化的模板模式修饰语

修饰语

描述

例子

FM prefix

填充模式(抑制拖尾零和填充的空白)。

FM99.99

TH suffix

大写序数后缀。

999TH

th suffix

小写序数后缀。

999th

to_char函数示例

表达式

结果

to_char(current_timestamp, 'Day, DD  HH12:MI:SS')

'Tuesday  , 06  05:39:18'

to_char(current_timestamp, 'FMDay, FMDD  HH12:MI:SS')

'Tuesday, 6  05:39:18'

to_char(-0.1, '99.99')

'  -.10'

to_char(-0.1, 'FM9.99')

'-.1'

to_char(-0.1, 'FM90.99')

'-0.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, 'FM999.999')

'148.5'

to_char(148.5, 'FM999.990')

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

'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:"999" Post:" .999')

'Pre: 485 Post: .800'

to_char(12, '99V999')

' 12000'

to_char(12.4, '99V999')

' 12400'

to_char(12.45, '99V9')

' 125'

to_char(0.0004859, '9.99EEEE')

' 4.86e-04'