Re: extract, epoch, date_part y zona horaria ?

From: "usuario anonimo" <opinante(dot)anonimo(at)gmail(dot)com>
To: "Alvaro Herrera" <alvherre(at)commandprompt(dot)com>
Cc: "PostgreSQL ayuda" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: extract, epoch, date_part y zona horaria ?
Date: 2007-09-05 02:46:50
Message-ID: 91b524660709041946y954706agbd99b3424ee77511@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El 6/07/07, Alvaro Herrera <alvherre(at)commandprompt(dot)com> escribió:
> usuario anonimo escribió:
>
> > postgres=# show timezone;
> > TimeZone
> > -----------
> > localtime
> >
> > postgres=# SELECT EXTRACT(EPOCH FROM TIMESTAMP '1970-01-01 00:00:00');
> > date_part
> > -----------
> > 10800
> > (1 fila)
>
> [etc]
>
> Haz la siguiente prueba:
>
> create view X as select extract( ... )
>
> Luego examina la vista con \d y pon atencion a la consulta que te
> muestra, y al tipo de dato que estas usando.

pruebasdb=> create view a as SELECT EXTRACT(EPOCH FROM TIMESTAMP WITH
TIME ZONE '1970-01-01 00:00:00');
CREATE VIEW
pruebasdb=> \d a
Vista «sistemaerp.a»
Columna | Tipo | Modificadores
-----------+------------------+---------------
date_part | double precision |
Definición de vista:
SELECT date_part('epoch'::text, '1970-01-01 00:00:00-03'::timestamp
with time zone) AS date_part;

>
> La diferencia entre los 10800 y 18000 se debe probablemente a los
> distintos husoss horarios que tu y Jaime (?) tienen configurados.

Si efectivamente, si divido 10800/3600 me da 3 que es el UTC-3 que es
mi hora local.

El problema(si es que se podria considerar un error) esta en que me
imagine que para la fecha "1970-01-01 00:00:00" el Timestamp(cantidad
de milisegundos que han transcurrido) es siempre 0 independiente o no
de la zona horaria. Pero el 0 solo se da para la fecha "1970-01-01
00:00:00-00" ya que para la fecha "1970-01-01 00:00:00-03" (que es 3
horas después de la fecha "1970-01-01 00:00:00-00") se agrega las 3
horas menos.

Saludos y gracias por la aclaración.

>
>
> Con respecto al valor "por omision" de TimeZone, lo que hace Postgres al
> iniciar es tomar la configuracion de fecha del sistema operativo y
> compararla con todos los husos horarios que tiene en su listado. Aquel
> con el que es mas cercano (usualmente porque son iguales) es
> seleccionado como el valor para TimeZone. Para saber cual es, usa
>
> SHOW timezone;
>
> Por lo tanto, el hecho de que no tengas nada en postgresql.conf no
> significa que tome un valor en particular.
>
> --
> Alvaro Herrera http://www.CommandPrompt.com/
> The PostgreSQL Company - Command Prompt, Inc.
>

--
_________________________________
Solo soy una mente genial en un cuerpo

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Ramón Alberto Bruening González 2007-09-05 03:39:30 RE: Linux Red Hat 9 o Fedora 6
Previous Message Alvaro Herrera 2007-09-05 02:35:12 Propietario vs. privativo