TO_CHAR

将日期/时间和数字值转换成文本字符串。

行为类型

稳定

语法

TO_CHAR ( expression [, pattern ] )

参数

表达式
指定要转换的值,为以下数据类型之一:

存在以下限制:

  • TO_CHAR 不支持二进制数据类型 BINARY 和 VARBINARY

  • TO_CHAR 不支持将 V 与小数点结合使用,例如, 99.9V99

模式
指定输出模式字符串的 CHAR 或 VARCHAR。请参阅用于日期/时间格式化的模板模式

注意

  • Vertica 使用前置空格填充 TO_CHAR 输出,因此正值和负值具有相同的长度。要抑制填充,请使用 FM 前缀

  • 如果您将 TIME 显式转换为 TIMESTAMP 并将 TIMETZ 转换为 TIMESTAMPTZ,则 TO_CHAR 接受 TIME 和 TIMETZ 数据类型作为输入。

    => SELECT TO_CHAR(TIME '14:34:06.4','HH12:MI am'), TO_CHAR(TIMETZ '14:34:06.4+6','HH12:MI am');
     TO_CHAR  | TO_CHAR
    ----------+----------
     02:34 pm | 04:34 am
    (1 row)
    
  • 您可以从 TIMETZ 提取时区小时:

    => SELECT EXTRACT(timezone_hour FROM TIMETZ '10:30+13:30');
     date_part
    -----------
            13
    (1 row)
    
  • 普通字面量允许用于 TO_CHAR 模板,并且将当做字面量输出。您可以将子字符串放入双引号中,以强制它转换为字面量,即使包含模式关键词。在以下示例中,YYYY 被替换为年份数据,但 Year 中的 Y 不是:

    => SELECT to_char(CURRENT_TIMESTAMP, '"Hello Year " YYYY');
         to_char
    ------------------
     Hello Year  2021
    (1 row)
    
  • TO_CHAR 使用与 EXTRACT 不同的星期编号(请参阅 D 模板模式)。

  • 如果规定 INTERVAL 类型,TO_CHAR 以 HHHH12 作为一天的小时数,而 HH24 可输出超过一天的小时数,例如 >24

  • 要在输出中包含双引号 (") 字符,请在其前面加上双反斜杠 (\\)。这样做很有必要,因为反斜杠在字符串常数中已经具有特殊含义。例如: '\\"YYYY Month\\"'

  • 四舍五入时,如果数字正好是两者的中间值,舍入表示形式的最后一位数应选择偶数。

示例

另请参阅

DATE_PART