You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改psql中\timing命令的时间输出格式?

解决psql中\timing输出时间小数分隔符为逗号的问题

在psql里用\timing on查看SQL执行时间时,输出的时间格式默认用逗号当小数分隔符(例如Time: 0,475 ms),想改成点分隔的标准格式,但尝试修改数据库会话LC参数的操作没效果,执行的代码如下:

\timing off
SET LC_MESSAGES TO 'pt_BR.UTF-8'; SET LC_MONETARY TO 'pt_BR.UTF-8';
SET LC_NUMERIC TO 'pt_BR.UTF-8'; SET LC_TIME TO 'pt_BR.UTF-8';
\timing on
SELECT 1+1;

\timing off
SET LC_MESSAGES TO 'en_US.UTF-8'; SET LC_MONETARY TO 'en_US.UTF-8';
SET LC_NUMERIC TO 'en_US.UTF-8'; SET LC_TIME TO 'en_US.UTF-8';
\timing on
SELECT 1+1;

问题原因

你之前修改的是数据库会话层面的LC参数,但psql的\timing输出格式是由客户端(psql程序本身)的locale环境决定的,和数据库端设置无关,所以之前的操作无效。

解决方法

方法1:启动psql时指定环境变量(临时生效)

直接在启动psql的命令行里设置LC_NUMERIC,比如:

LC_NUMERIC=en_US.UTF-8 psql -d 你的数据库名称

启动后再执行\timing on和SQL语句,输出的时间就会用点作为小数分隔符,比如Time: 0.475 ms。

方法2:修改psql配置文件(永久生效)

编辑用户目录下的.psqlrc文件(没有的话直接新建),添加一行:

\setenv LC_NUMERIC en_US.UTF-8

保存后,每次启动psql都会自动应用这个设置,无需手动指定环境变量。

方法3:当前psql会话内临时设置(仅本次会话生效)

在psql会话中执行:

\setenv LC_NUMERIC en_US.UTF-8

然后重启\timing:

\timing off
\timing on

之后执行SQL的时间输出就会切换为点分隔的格式。

内容的提问来源于stack exchange,提问作者Peter Krauss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 10:35:55