<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Forum PostgreSQL - UTC do konkretnej strefy]]></title>
		<link>https://forum.postgresql.org.pl/viewtopic.php?id=2265</link>
		<description><![CDATA[Najświeższe odpowiedzi w UTC do konkretnej strefy.]]></description>
		<lastBuildDate>Wed, 11 Mar 2015 22:32:40 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Odp: UTC do konkretnej strefy]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=5461#p5461</link>
			<description><![CDATA[najpierw sprawdź domyślna timezone bazy 

show timezone; 

Jeśli jest inna niż czas UTC ustaw ją czas UTC poleceniem

set timezone='Etc/Zulu';

poniżej masz selecta pokazującego sposób konwersji

SELECT czas as czas_without_timezone
      ,czas at time zone 'Africa/Juba' as czas_without_bledna_nonwersja
      ,cast (czas as TIMESTAMP WITH TIME ZONE) as czas_biezace_timezone 
      ,cast (czas as TIMESTAMP WITH TIME ZONE) AT TIME ZONE 'Africa/Juba' as czas_time_zone_juba_africa
from (select TIMESTAMP WITHout TIME ZONE '2015-02-16 20:38:40' as czas) c;

po czym przywróć zmienną timezone 
reset timezone;

najprostszym sposobem konwersji jest przypisanie zmiennej timezone do użytkownika np
ALTER ROLE postgres IN DATABASE test SET TimeZone = 'America/New_York';
wyloguj i zaloguj się do bazy i sprawdź czas select localtimestamp,current_timestamp;

wykaz wszystkich stref czasowych masz tu select * from pg_timezone_names;

pobaw się trochę tymi selectami na 2 różnych użytkownikach z różnymi strefami czasowymi i przekonwertuj pole w którym przechowywałeś czas UTC na timestamp with time zone.]]></description>
			<author><![CDATA[dummy@example.com (c_michal)]]></author>
			<pubDate>Wed, 11 Mar 2015 22:32:40 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=5461#p5461</guid>
		</item>
		<item>
			<title><![CDATA[UTC do konkretnej strefy]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=5460#p5460</link>
			<description><![CDATA[Mam w bazie kolumny z datami typu:
timestamp without time zone jest do nich ładowany czas UTC.

Teraz robię raporty i różne operacje na danych, np. zakres dat, zliczam rekordy w dniu, tygodniu, agregacje itp. 

Teraz powiedzmy że mam użytkownika w Polsce i w USA, jak zamienić daty na czas lokalny dla użytkowników w tych krajach z uwzględnieniem zmian czasu (zimowy, letni) (ewentualnie czy w format danych który użyłem jest w tym przypadku odpowiedni)?]]></description>
			<author><![CDATA[dummy@example.com (tryhp3)]]></author>
			<pubDate>Wed, 11 Mar 2015 19:58:17 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=5460#p5460</guid>
		</item>
	</channel>
</rss>
