• 沒有找到結果。

date_format

6.9 类型转换函数

类型转换函数

● cast(x as y)

描述:类型转换函数,将x转换成y指定的类型。

示例:

SELECT cast('22-oct-1997' as timestamp);

timestamp 1997-10-22 00:00:00 (1 row)

● hextoraw(string)

描述:将一个十六进制构成的字符串转换为二进制。

返回值类型:raw 示例:

SELECT hextoraw('7D');

hextoraw 7D(1 row)

● numtoday(numeric)

描述:将数字类型的值转换为指定格式的时间戳。

返回值类型:timestamp 示例:

SELECT numtoday(2);

numtoday 2 days (1 row)

● pg_systimestamp() 描述:获取系统时间戳。

返回值类型:timestamp with time zone 示例:

SELECT pg_systimestamp();

pg_systimestamp 2015-10-14 11:21:28.317367+08 (1 row)

● rawtohex(string)

描述:将一个二进制构成的字符串转换为十六进制的字符串。

结果为输入字符的ACSII码,以十六进制表示。

返回值类型:varchar 示例:

SELECT rawtohex('1234567');

rawtohex 31323334353637 (1 row)

● to_char (datetime/interval [, fmt])

描述:将一个DATE、TIMESTAMP、TIMESTAMP WITH TIME ZONE或者 TIMESTAMP WITH LOCAL TIME ZONE类型的DATETIME或者INTERVAL值按照 fmt指定的格式转换为VARCHAR类型。

– 可选参数fmt可以为以下几类:日期、时间、星期、季度和世纪。每类都可以 有不同的模板,模板之间可以合理组合,常见的模板有:HH、MM、SS、

YYYY、MM、DD。

– 模板可以有修饰词,常用的修饰词是FM,可以用来抑制前导的零或尾随的空 白。

返回值类型:varchar 示例:

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

to_char 10:19:26 (1 row)

SELECT to_char(current_timestamp,'FMHH12:FMMI:FMSS');

to_char 10:19:46 (1 row)

● to_char(double precision, text)

描述:将双精度类型的值转换为指定格式的字符串。

返回值类型:text 示例:

SELECT to_char(125.8::real, '999D99');

to_char 125.80 (1 row)

● to_char (integer/number[, fmt])

描述:将一个整型或者浮点类型的值转换为指定格式的字符串。

– 可选参数fmt可以为以下几类:十进制字符、“分组”符、正负号和货币符 号,每类都可以有不同的模板,模板之间可以合理组合,常见的模板有:9、

0、,(千分隔符)、.(小数点)。

– 模板可以有类似FM的修饰词,但FM不抑制由模板0指定而输出的0。

– 要将整型类型的值转换成对应16进制值的字符串,使用模板X或x。

返回值类型:varchar 示例:

SELECT to_char(1485,'9,999');

to_char 1,485 (1 row)

SELECT to_char( 1148.5,'9,999.999');

to_char 1,148.500 (1 row)

SELECT to_char(148.5,'990999.909');

to_char 0148.500 (1 row)

SELECT to_char(123,'XXX');

to_char 7B (1 row)

● to_char(interval, text)

描述:将时间间隔类型的值转换为指定格式的字符串。

返回值类型:text 示例:

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

to_char 15:02:12 (1 row)

● to_char(int, text)

描述:将整数类型的值转换为指定格式的字符串。

返回值类型:text 示例:

SELECT to_char(125, '999');

to_char 125 (1 row)

● to_char(numeric, text)

描述:将数字类型的值转换为指定格式的字符串。

返回值类型:text 示例:

SELECT to_char(-125.8, '999D99S');

to_char 125.80-(1 row)

● to_char (string)

● to_char(timestamp, text)

描述:将时间戳类型的值转换为指定格式的字符串。

返回值类型:text 示例:

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

to_char

World222!

(1 row)

● to_date(text)

描述:将文本类型的值转换为指定格式的时间戳。

返回值类型:timestamp 示例:

SELECT to_date('2015-08-14');

to_date 2015-08-14 00:00:00 (1 row)

● to_date(text, text)

描述:将字符串类型的值转换为指定格式的日期。

返回值类型:timestamp 示例:

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

to_date 2000-12-05 00:00:00 (1 row)

● to_date(string, fmt) 描述:

将字符串string按fmt指定格式转化为DATE类型的值。

该函数不能直接支持CLOB类型,但是CLOB类型的参数能够通过隐式转换实现。

返回值类型:date 示例:

SELECT TO_DATE('05 Dec 2010','DD Mon YYYY');

to_date 2010-12-05 00:00:00 (1 row)

● to_number ( expr [, fmt])

描述:将expr按指定格式转换为一个NUMBER类型的值。

类型转换格式请参考表6-8。

转换十六进制字符串为十进制数字时,最多支持16个字节的十六进制字符串转换 为无符号数。

转换十六进制字符串为十进制数字时,格式字符串中不允许出现除'x'或'X'以外的 其他字符,否则报错。

返回值类型:number 示例:

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

to_number -12454.8 (1 row)

● to_number(text, text)

描述:将字符串类型的值转换为指定格式的数字。

返回值类型:numeric 示例:

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

to_number -12454.8 (1 row)

● to_timestamp(double precision) 描述:把UNIX纪元转换成时间戳。

返回值类型:timestamp with time zone 示例:

SELECT to_timestamp(1284352323);

to_timestamp 2010-09-13 12:32:03+08 (1 row)

● to_timestamp(string [,fmt])

描述:将字符串string按fmt指定的格式转换成时间戳类型的值。不指定fmt时,

返回值类型:timestamp without time zone 示例:

SHOW nls_timestamp_format;

nls_timestamp_format DD-Mon-YYYY HH:MI:SS.FF AM (1 row)

SELECT to_timestamp('12-sep-2014');

to_timestamp 2014-09-12 00:00:00 (1 row)

SELECT to_timestamp('12-Sep-10 14:10:10.123000','DD-Mon-YY HH24:MI:SS.FF');

to_timestamp 2010-09-12 14:10:10.123 (1 row)

SELECT to_timestamp('-1','SYYYY');

to_timestamp 0001-01-01 00:00:00 BC (1 row)

SELECT to_timestamp('98','RR');

to_timestamp 1998-01-01 00:00:00 (1 row)

SELECT to_timestamp('01','RR');

to_timestamp 2001-01-01 00:00:00 (1 row)

● to_timestamp(text, text)

描述:将字符串类型的值转换为指定格式的时间戳。

返回值类型:timestamp

示例:

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

to_timestamp 2000-12-05 00:00:00 (1 row)

6-8 数值格式化的模版模式

模式 描述

9 带有指定数值位数的值

0 带前导零的值

.(句点) 小数点

,(逗号) 分组(千)分隔符

PR 尖括号内负值

S 带符号的数值(使用区域设置)

L 货币符号(使用区域设置)

D 小数点(使用区域设置)

G 分组分隔符(使用区域设置)

MI 在指明的位置的负号(如果数字 < 0)

PL 在指明的位置的正号(如果数字 > 0)

SG 在指明的位置的正/负号

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

TH或th 序数后缀

V 移动指定位(小数)