如何使 postgres 中的语言环境可见?
How to make visible the locale in postgres?
我想知道是否可以使所选语言环境可见。我愿意(windows),
>bin\initdb --locale=en-us --encoding=utf-8 -U postgres -W clus1
>bin\pg_ctl.exe -D clus1 -l logfile2 start
>psql -U postgres
postgres=# select now();
now
-------------------------------
2022-03-07 21:15:07.56299+01
>bin\pg_ctl.exe -D clus1 -l logfile2 stop
>rmdir /s clus1
现在我选择另一个语言环境,
>bin\initdb --locale=nl-nl --encoding=utf-8 -U postgres -W clus1
>bin\pg_ctl.exe -D clus1 -l logfile2 start
>psql -U postgres
postgres=# select now();
now
-------------------------------
2022-03-07 21:16:30.071371+01
我原以为 now() 会用荷兰语,但事实并非如此。为什么不,我怎样才能使语言环境可见,所以请检查所选的语言环境?
语言环境由几个部分组成:
lc_collate
: 比较和排序字符串的规则
lc_ctype
:判断一个字符是什么类型的规则(字母,数字,space,...)
lc_messages
: 错误和日志消息的语言
lc_monetary
:to_char
数字
中用于货币格式代码的语言
要查看lc_monetary
的效果,试试
SELECT to_char(100, '999L');
lc_numeric
:用于数字 to_char
中十进制逗号和组分隔符格式代码的语言
要查看lc_numeric
的效果,试试
SELECT to_char(1000000.50, '9G999G999D00L');
lc_time
:to_char
中时间戳 log_filename
等
中星期几和月份名称格式代码使用的语言
要查看lc_numeric
的效果,试试
SELECT to_char(current_timestamp, 'FMDAY, DD. FMMONTH');
您可以通过 SHOW
:
找到它们每个的设置
SHOW lc_collate;
date/time 和数字数据类型的类型输出函数不使用语言环境设置,因此 now()
的输出不受语言环境影响。
我想知道是否可以使所选语言环境可见。我愿意(windows),
>bin\initdb --locale=en-us --encoding=utf-8 -U postgres -W clus1
>bin\pg_ctl.exe -D clus1 -l logfile2 start
>psql -U postgres
postgres=# select now();
now
-------------------------------
2022-03-07 21:15:07.56299+01
>bin\pg_ctl.exe -D clus1 -l logfile2 stop
>rmdir /s clus1
现在我选择另一个语言环境,
>bin\initdb --locale=nl-nl --encoding=utf-8 -U postgres -W clus1
>bin\pg_ctl.exe -D clus1 -l logfile2 start
>psql -U postgres
postgres=# select now();
now
-------------------------------
2022-03-07 21:16:30.071371+01
我原以为 now() 会用荷兰语,但事实并非如此。为什么不,我怎样才能使语言环境可见,所以请检查所选的语言环境?
语言环境由几个部分组成:
lc_collate
: 比较和排序字符串的规则lc_ctype
:判断一个字符是什么类型的规则(字母,数字,space,...)lc_messages
: 错误和日志消息的语言
中用于货币格式代码的语言lc_monetary
:to_char
数字要查看
lc_monetary
的效果,试试SELECT to_char(100, '999L');
lc_numeric
:用于数字to_char
中十进制逗号和组分隔符格式代码的语言要查看
lc_numeric
的效果,试试SELECT to_char(1000000.50, '9G999G999D00L');
中星期几和月份名称格式代码使用的语言lc_time
:to_char
中时间戳log_filename
等要查看
lc_numeric
的效果,试试SELECT to_char(current_timestamp, 'FMDAY, DD. FMMONTH');
您可以通过 SHOW
:
SHOW lc_collate;
date/time 和数字数据类型的类型输出函数不使用语言环境设置,因此 now()
的输出不受语言环境影响。