sql >> Databáze >  >> RDS >> PostgreSQL

Jaké informace o časovém pásmu PostgreSQL ukládá?

Oba vaše předpoklady jsou špatné:

PostgreSQL ukládá timestamp with time zone jako 8bajtové celé číslo, které obsahuje posun od 2000-01-01 00:00:00 UTC v mikrosekundách.

Neukládá tedy ani časové pásmo, ani přesnost 1 minuty.

Po převodu na řetězec je časové razítko naformátováno podle aktuálního nastavení timezone parametr.

Pokud tedy musíte časové pásmo uložit samostatně, pokud si jej potřebujete zapamatovat a použít AT TIME ZONE výraz pro převod časového razítka na správné časové pásmo.

Žádáte o reference na dokumentaci. Součástí je zde :

/*
 * Timestamp represents absolute time.
[...]
 * Timestamps, as well as the h/m/s fields of intervals, are stored as
 * int64 values with units of microseconds.  (Once upon a time they were
 * double values with units of seconds.)

Ve stejném souboru najdete

/* Julian-date equivalents of Day 0 in Unix and Postgres reckoning */
#define UNIX_EPOCH_JDATE        2440588 /* == date2j(1970, 1, 1) */
#define POSTGRES_EPOCH_JDATE    2451545 /* == date2j(2000, 1, 1) */



  1. problém s apex_application_temp_files

  2. Optimalizace doby načítání MySQL

  3. Nelze se připojit k databázi localhost ze serveru node.js

  4. Jak získám aktuální rok pomocí SQL na Oracle?