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)
-
如果规定 INTERVAL 类型,TO_CHAR 以
HH
和HH12
作为一天的小时数,而HH24
可输出超过一天的小时数,例如>24
。 -
要在输出中包含双引号 (
"
) 字符,请在其前面加上双反斜杠 (\\
)。这样做很有必要,因为反斜杠在字符串常数中已经具有特殊含义。例如:'\\"YYYY Month\\"'
-
四舍五入时,如果数字正好是两者的中间值,舍入表示形式的最后一位数应选择偶数。