根据请求更改 PostgreSQL 日期语言
Change PostgreSQL date language from request
我是 PostgreSQL 的新手,我正在尝试更改日期函数结果的区域设置,以获取另一种语言的 to_char(my_date, 'Month')
结果。
这是我的一些设置:
$> show lc_time;
en_US.UTF-8
我在文档中发现可以在数据库初始化时更改语言环境:
initdb --locale=fr_FR
但这并不是我要找的。
在MySQL中,我曾经这样做过:
SET lc_time_names = 'fr_FR';
但不幸的是,我找不到使用 PostgreSQL 来完成此操作的方法。有吗?
您可以通过特殊的TM
格式(翻译模式)获取月份名称的本地化版本:
to_char(my_date, 'TMMonth')
您也可以使用 TMD
将此应用于工作日的名称。两个版本都将使用服务器的区域设置显示名称,除非 lc_time
运行-time 参数具有特定设置。也可以为当前会话更改该设置:
SET lc_time = 'fr_FR';
如果您想在同一会话中恢复为默认设置,请使用:
SET lc_time TO DEFAULT;
您可以设置函数范围的配置参数(包括 IMMUTABLE
or STABLE
functions) with set_config(setting_name, new_value, is_local)
。
所以,如果你想在 fr_FR
中格式化你的日期,你可以这样做:
CREATE OR REPLACE FUNCTION format_month() RETURNS TEXT AS $$
SELECT set_config('lc_time', 'fr_FR.utf8', true);
SELECT to_char(now(), 'TMMonth');
$$ LANGUAGE sql STABLE;
(注意 TM-
prefix 启用翻译模式,它会根据 lc_time
打印本地化的日期和月份名称。)
在我的电脑上,上述函数产生了一个错误,直到我安装了 fr_FR
语言环境并重新启动了 postgres。你如何做到这一点取决于你的 OS,但在 Ubuntu 我使用 dpkg-reconfigure locales
.
我是 PostgreSQL 的新手,我正在尝试更改日期函数结果的区域设置,以获取另一种语言的 to_char(my_date, 'Month')
结果。
这是我的一些设置:
$> show lc_time;
en_US.UTF-8
我在文档中发现可以在数据库初始化时更改语言环境:
initdb --locale=fr_FR
但这并不是我要找的。
在MySQL中,我曾经这样做过:
SET lc_time_names = 'fr_FR';
但不幸的是,我找不到使用 PostgreSQL 来完成此操作的方法。有吗?
您可以通过特殊的TM
格式(翻译模式)获取月份名称的本地化版本:
to_char(my_date, 'TMMonth')
您也可以使用 TMD
将此应用于工作日的名称。两个版本都将使用服务器的区域设置显示名称,除非 lc_time
运行-time 参数具有特定设置。也可以为当前会话更改该设置:
SET lc_time = 'fr_FR';
如果您想在同一会话中恢复为默认设置,请使用:
SET lc_time TO DEFAULT;
您可以设置函数范围的配置参数(包括 IMMUTABLE
or STABLE
functions) with set_config(setting_name, new_value, is_local)
。
所以,如果你想在 fr_FR
中格式化你的日期,你可以这样做:
CREATE OR REPLACE FUNCTION format_month() RETURNS TEXT AS $$
SELECT set_config('lc_time', 'fr_FR.utf8', true);
SELECT to_char(now(), 'TMMonth');
$$ LANGUAGE sql STABLE;
(注意 TM-
prefix 启用翻译模式,它会根据 lc_time
打印本地化的日期和月份名称。)
在我的电脑上,上述函数产生了一个错误,直到我安装了 fr_FR
语言环境并重新启动了 postgres。你如何做到这一点取决于你的 OS,但在 Ubuntu 我使用 dpkg-reconfigure locales
.