<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Forum PostgreSQL - UTC do konkretnej strefy]]></title>
	<link rel="self" href="http://forum.postgresql.org.pl/extern.php?action=feed&amp;tid=2265&amp;type=atom"/>
	<updated>2015-03-11T22:32:40Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.postgresql.org.pl/viewtopic.php?id=2265</id>
		<entry>
			<title type="html"><![CDATA[Odp: UTC do konkretnej strefy]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=5461#p5461"/>
			<content type="html"><![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.]]></content>
			<author>
				<name><![CDATA[c_michal]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=627</uri>
			</author>
			<updated>2015-03-11T22:32:40Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=5461#p5461</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[UTC do konkretnej strefy]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=5460#p5460"/>
			<content type="html"><![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)?]]></content>
			<author>
				<name><![CDATA[tryhp3]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1132</uri>
			</author>
			<updated>2015-03-11T19:58:17Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=5460#p5460</id>
		</entry>
</feed>
