
# 类型转换函数
#### cast(x as y)
描述：类型转换函数，将x转换成y指定的类型。
示例：
```
SELECT cast('22-oct-1997' as timestamp);
      timestamp      
---------------------
 1997-10-22 00:00:00
(1 row)
```
#### cast(x, y)
描述：类型转换函数，将x转换成y指定的类型。该函数仅8.2.0及以上集群版本支持。
示例：
```
SELECT cast('22-oct-1997', timestamp);
      timestamp      
---------------------
 1997-10-22 00:00:00
(1 row)
```
#### try_cast(x as type)
描述：将x转换成给定的type类型值，若转换失败且当前类型转换为DWS允许的转换，则返回NULL，否则报错。该函数仅8.2.0及以上集群版本支持。
示例：
```
SELECT try_cast('a' as int4);
      int4
---------------
(1 row)
SELECT try_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)
描述：将一个二进制构成的字符串转换为十六进制的字符串。
结果为输入字符的ASCII码，以十六进制表示。
返回值类型：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、MI、SS、YYYY、MM、DD，可参考[表2]。
- 模板可以有修饰词，常用的修饰词是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、,（千分隔符）、.（小数点），可参考[表1]。
- 模板可以有类似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)
描述：将CHAR、VARCHAR、VARCHAR2、CLOB类型转换为VARCHAR类型。
如使用该函数对CLOB类型进行转换，且待转换CLOB类型的值超出目标类型的范围，则返回错误。
返回值类型：varchar
示例：
```
SELECT to_char('01110');
 to_char
---------
 01110
(1 row)
```
#### to_char(timestamp, text)
描述：将时间戳类型的值转换为指定格式的字符串。
返回值类型：text
示例：
```
SELECT to_char(current_timestamp, 'HH12:MI:SS');
 to_char
----------
 10:55:59
(1 row)
```
#### to_clob(char/nchar/varchar/nvarchar/varchar2/nvarchar2/text/raw)
描述：将RAW类型或者文本字符集类型CHAR、NCHAR、VARCHAR、VARCHAR2、NVARCHAR2、TEXT转成CLOB类型。
返回值类型：clob
示例：
```
SELECT to_clob('ABCDEF'::RAW(10));
 to_clob 
---------
 ABCDEF
(1 row)
```
```
SELECT to_clob('hello111'::CHAR(15));
 to_clob  
----------
 hello111
(1 row)
```
```
SELECT to_clob('gauss123'::NCHAR(10));
 to_clob  
----------
 gauss123
(1 row)
```
```
SELECT to_clob('gauss234'::VARCHAR(10));
 to_clob  
----------
 gauss234
(1 row)
```
```
SELECT to_clob('gauss345'::VARCHAR2(10));
 to_clob  
----------
 gauss345
(1 row)
```
```
SELECT to_clob('gauss456'::NVARCHAR2(10));
 to_clob  
----------
 gauss456
(1 row)
```
```
SELECT to_clob('World222!'::TEXT);
  to_clob  
-----------
 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类型的值。fmt格式可参考[表2]。
该函数不能直接支持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类型的值。
类型转换格式请参考[表1]。
转换十六进制字符串为十进制数字时，最多支持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时，按参数nls_timestamp_format所指定的格式转换。fmt格式可参考[表2]。
DWS的to_timestamp中，
- 如果输入的年份YYYY=0，系统报错。
- 如果输入的年份YYYY\<0，在fmt中指定SYYYY，则正确输出公元前绝对值n的年份。
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)
```
[表1]显示了可以用于格式化数值的模板模式，适用于函数to_number。
 表1数值格式化的模板模式 
| 模式    | 描述                    |
|:---|:---|
| 9     | 带有指定数值位数的值            |
| 0     | 带前导零的值                |
| .（句点） | 小数点                   |
| ,（逗号） | 分组（千）分隔符              |
| PR    | 尖括号内负值                |
| S     | 带符号的数值（使用区域设置）        |
| L     | 货币符号（使用区域设置）          |
| D     | 小数点（使用区域设置）           |
| G     | 分组分隔符（使用区域设置）         |
| MI    | 在指明的位置的负号（如果数字 \< 0）  |
| PL    | 在指明的位置的正号（如果数字 \> 0）  |
| SG    | 在指明的位置的正/负号           |
| RN    | 罗马数字（输入在 1 和 3999 之间） |
| TH或th | 序数后缀                  |
| V     | 移动指定位（小数）             |
   
[表2]显示了可以用于格式化日期和时间值的模板，这些模式适用于函数to_date、to_timestamp、to_char和参数nls_timestamp_format。
 表2用于日期/时间格式化的模式 
| 类别                                                                                | 模式                                                                                                                                                                                                                                                                                                                                                               | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
|:---|:---|:---|
| 小时                                                                                | HH                                                                                                                                                                                                                                                                                                                                                               | 一天的小时数（01-12）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| 小时                                                                                | HH12                                                                                                                                                                                                                                                                                                                                                             | 一天的小时数（01-12）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| 小时                                                                                | HH24                                                                                                                                                                                                                                                                                                                                                             | 一天的小时数（00-23）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| 分钟                                                                                | MI                                                                                                                                                                                                                                                                                                                                                               | 分钟（00-59）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| 秒                                                                                 | SS                                                                                                                                                                                                                                                                                                                                                               | 秒（00-59）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| 秒                                                                                 | FF                                                                                                                                                                                                                                                                                                                                                               | 微秒（000000-999999）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| 秒                                                                                 | SSSSS                                                                                                                                                                                                                                                                                                                                                            | 午夜后的秒（0-86399）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| 上、下午                                                                              | AM或A.M.                                                                                                                                                                                                                                                                                                                                                          | 上午标识                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| 上、下午                                                                              | PM或P.M.                                                                                                                                                                                                                                                                                                                                                          | 下午标识                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| 年   | Y,YYY                                                                                                                                                                                                                                                                                                                                                            | 带逗号的年（4和更多位）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| 年   | SYYYY                                                                                                                                                                                                                                                                                                                                                            | 公元前四位年                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| 年   | YYYY                                                                                                                                                                                                                                                                                                                                                             | 年（4和更多位）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| 年   | YYY                                                                                                                                                                                                                                                                                                                                                              | 年的后三位                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| 年   | YY                                                                                                                                                                                                                                                                                                                                                               | 年的后两位                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| 年   | Y                                                                                                                                                                                                                                                                                                                                                                | 年的最后一位                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| 年   | IYYY                                                                                                                                                                                                                                                                                                                                                             | ISO年（4位或更多位）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| 年   | IYY                                                                                                                                                                                                                                                                                                                                                              | ISO年的最后三位                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| 年   | IY                                                                                                                                                                                                                                                                                                                                                               | ISO年的最后两位                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| 年   | I                                                                                                                                                                                                                                                                                                                                                                | ISO年的最后一位                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| 年   | RR                                                                                                                                                                                                                                                                                                                                                               | 年的后两位（可在21世纪存储20世纪的年份） 规则如下： - 输入的两位年份在00\~49之间： 当前年份的后两位在00\~49之间，返回值年份的前两位和当前年份的前两位相同； 当前年份的后两位在50\~99之间，返回值年份的前两位是当前年份的前两位加1。   - 输入的两位年份在50\~99之间： 当前年份的后两位在00\~49之间，返回值年份的前两位是当前年份的前两位减1； 当前年份的后两位在50\~99之间，返回值年份的前两位和当前年份的前两位相同。    |
| 年   | RRRR                                                                                                                                                                                                                                                                                                                                                             | 可接收4位年或两位年。若是两位，则和RR的返回值相同，若是四位，则和YYYY相同。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| 年   | - BC或B.C.  - AD或A.D.   | 纪元标识。BC（公元前），AD（公元后）。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| 月                                                                                 | MONTH                                                                                                                                                                                                                                                                                                                                                            | 全长大写月份名（空白填充为9字符）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| 月                                                                                 | MON                                                                                                                                                                                                                                                                                                                                                              | 大写缩写月份名（3字符）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| 月                                                                                 | MM                                                                                                                                                                                                                                                                                                                                                               | 月份数（01-12）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| 月                                                                                 | RM                                                                                                                                                                                                                                                                                                                                                               | 罗马数字的月份（I-XII ；I=JAN）（大写）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| 天                                                                                 | DAY                                                                                                                                                                                                                                                                                                                                                              | 全长大写日期名（空白填充为9字符）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| 天                                                                                 | DY                                                                                                                                                                                                                                                                                                                                                               | 缩写大写日期名（3字符）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| 天                                                                                 | DDD                                                                                                                                                                                                                                                                                                                                                              | 一年里的日（001-366）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| 天                                                                                 | DD                                                                                                                                                                                                                                                                                                                                                               | 一个月里的日（01-31）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| 天                                                                                 | D                                                                                                                                                                                                                                                                                                                                                                | 一周里的日（1-7 ；周日是 1）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| 周                                                                                 | W                                                                                                                                                                                                                                                                                                                                                                | 一个月里的周数（1-5）（第一周从该月第一天开始）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| 周                                                                                 | WW                                                                                                                                                                                                                                                                                                                                                               | 一年里的周数（1-53）（第一周从该年的第一天开始）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| 周                                                                                 | IW                                                                                                                                                                                                                                                                                                                                                               | ISO一年里的周数（第一个星期四在第一周里）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| 世纪                                                                                | CC                                                                                                                                                                                                                                                                                                                                                               | 世纪（2位）（21 世纪从 2001-01-01 开始）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| 儒略日                                                                               | J                                                                                                                                                                                                                                                                                                                                                                | 儒略日（自公元前 4712 年 1 月 1 日来的天数）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| 季度                                                                                | Q                                                                                                                                                                                                                                                                                                                                                                | 季度                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   
