PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Посочете часова зона, която да използвате като референтна часова зона

Трябва да запишете допълнително отместването на часовата зона към timestamp .

Както @Milen вече обясни (и свързан към ръководството ):timestamp запазва само точка във времето (като абстрактна стойност). Модификаторът на часовата зона ене запазен, той служи само за коригиране на timestamp спрямо UTC .

Помислете за следната демонстрация:

-- DROP TABLE tbl;
CREATE TEMP TABLE tbl (id int, myts timestamptz, mytz interval);

INSERT INTO tbl VALUES
 (1, now()                , EXTRACT (timezone from now()) * interval '1s')
,(2, '2012-01-01 00:00-05', interval '-5h')
,(3, '2012-01-01 00:00+04', interval '4h')
,(4, '2012-11-11 20:30+03', interval '3h');

SELECT *
      ,(myts AT TIME ZONE mytz)::text
       || CASE WHEN mytz > '0:0' THEN '+' ELSE '' END
       || to_char(mytz, 'FMHH24:mi') AS timestamp_at_origin
FROM tbl;

Пуснете го локално, за да видите. Обърнете специално внимание на детайлите на В ЧАСОВАТА ЗОНА конструкция и как извличам часовата зона от (локалния!) timestamp with time zone .
now() връща timestamp with time zone или timestamptz за кратко.

EXTRACT (timezone from now()) * interval '1s'

timestamp_at_origin показва клеймото за време с часовата зона, както се вижда в началото. Ако разбрах въпроса ви, значи това е, което търсите.
Можете допълнително да подобрите форматирането.

Може да се интересувате от този свързан въпрос което хвърля малко светлина върху неяснотите и клопките на часовите зони.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Коригирайте „ГРЕШКА:  колона „colname“ не съществува“ в PostgreSQL, когато използвате UNION, EXCEPT или INTERSECT

  2. postgresql:разделяне на периода от време при събитие

  3. Съхраняване на PostgreSQL ARRAY от ENUM стойности

  4. Изчисляване на среднопретеглената себестойност на запасите от продукти

  5. EF Core GroupBy с Select Distinct Count