将时间戳或间隔转换为字符串

你可以使用 to_char() 函数将 timestampinterval 值转换为字符串:

SELECT to_char('2016-08-12 16:40:32'::timestamp, 'DD Mon YYYY HH:MI:SSPM');

该声明将产生字符串“2016 年 8 月 12 日 04:40:32 PM”。格式化字符串可以用许多不同的方式修改; 可以在此处找到模板模式的完整列表。

请注意,你还可以将纯文本插入格式化字符串,并且可以按任何顺序使用模板模式:

SELECT to_char('2016-08-12 16:40:32'::timestamp, 
               '"Today is "FMDay", the "DDth" day of the month of "FMMonth" of "YYYY');

这将产生字符串“今天是星期六,即 2016 年 8 月的第 12 天”。但是,你应该记住,除非纯文本是双引号,否则任何模板模式 - 甚至是单字母模式(如 IDW)都会被转换。作为安全措施,你应该将所有纯文本放在双引号中,如上所述。

你可以使用 TM(转换模式)修改器将字符串本地化为你选择的语言(日期和月份名称)。此选项使用运行 PostgreSQL 的服务器的本地化设置或连接到它的客户端。

SELECT to_char('2016-08-12 16:40:32'::timestamp, 'TMDay, DD" de "TMMonth" del año "YYYY');

凭借西班牙语区域设置,这将产生“Sábado,12 de Agostodelaño2016”。