<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Forum PostgreSQL - wykorzystanie lc_time w to_char]]></title>
	<link rel="self" href="http://forum.postgresql.org.pl/extern.php?action=feed&amp;tid=1488&amp;type=atom"/>
	<updated>2013-04-28T21:34:41Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.postgresql.org.pl/viewtopic.php?id=1488</id>
		<entry>
			<title type="html"><![CDATA[Odp: wykorzystanie lc_time w to_char]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=4165#p4165"/>
			<content type="html"><![CDATA[Dla potomnych :)
Zawsze dokładnie czytaj dokumentacje. Okazuje się, że opcje te nie działają jeśli używasz polecenie set session authorization, po zalogowaniu na użytkownika test_de wszystko działa.]]></content>
			<author>
				<name><![CDATA[c_michal]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=627</uri>
			</author>
			<updated>2013-04-28T21:34:41Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=4165#p4165</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[wykorzystanie lc_time w to_char]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=4164#p4164"/>
			<content type="html"><![CDATA[Chciałbym wykorzystać funkcje to_char w systemie, gdzie będą pracowali użytkownicy z kilku krajów, tak by każdy użytkownik widział datę sformatowana w swoim języku.
Ustawiłem więc dla użytkowników opcje lc_time (poniżej skrypt)

CREATE ROLE test_pl LOGIN VALID UNTIL 'infinity';
ALTER ROLE test_pl SET lc_time = 'Polish, Polish';
ALTER ROLE test_pl SET lc_messages = 'Polish, Polish';
CREATE ROLE test_de LOGIN VALID UNTIL 'infinity';
ALTER ROLE test_de SET lc_time = 'German, German';
ALTER ROLE test_de SET lc_messages = 'German, German';

Baza ma domyślnie ustawioną opcje lc_time jako Polish, a próba wykonania poniższego select-a kończy się wyświetleniem daty w języku domyślnym bazy.

set session authorization test_de;
select to_char(current_date,'yyyy-TMMONTH') as tlumaczenie;

Mogę co prawda wymusić prawidłowe działanie korzystając z set lc_time tak jak niżej pokazuje ale myślę że można skonfigurować serwer tak by robił to automatycznie w zależności od zalogowanego użytkownika

set session authorization test_de;
set lc_time='German, German';
select to_char(current_date,'yyyy-TMMONTH') as tlumaczenie;

Może ktoś wie jak skonfigurować serwer tak by nie trzeba było wykorzystywać komendy set lc_time przed każdym select-em i by zmieniał wartość lc_time w zależności od zalogowanego użytkownika.]]></content>
			<author>
				<name><![CDATA[c_michal]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=627</uri>
			</author>
			<updated>2013-04-26T07:52:40Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=4164#p4164</id>
		</entry>
</feed>
