From: | Alvaro Herrera <alvherre(at)2ndquadrant(dot)com> |
---|---|
To: | Magi Franquesa <magifranquesa(at)gmail(dot)com> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: campos timestamp |
Date: | 2016-10-06 18:10:05 |
Message-ID: | 20161006181005.GA715672@alvherre.pgsql |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Magi Franquesa escribió:
> Hola,
>
> Tengo una bd con registros de incendios en los que se indica la fecha y
> hora de inicio en un campo de tipo "timestamp with time zone", pero el
> problema es que en lugar de un solo campo con ambos datos hay dos campos:
> uno que contiene la fecha correcta y el segundo la hora. Necesito crear un
> nuevo campo del mismo tipo con la fecha y hora como muestro en el ejemplo
> siguiente:
>
> Campo 1 (fecha inicio):"*1968-09-08* 00:00:00+01"
> Campo 2 (hora inicio): "1900-01-01 *10:00:00+00*"
> Resultado buscado: "*1968-09-08 10:00:00+00*"
Haz un cast de cada uno al tipo correcto, y luego los juntas sumándolos:
alvherre=# create table magi (fecha timestamptz, hora timestamptz);
CREATE TABLE
alvherre=# insert into magi values ('1968-09-08 00:00:00+01', '1900-01-01 10:00:00+00' at time zone 'UTC');
INSERT 0 1
alvherre=# select fecha, hora from magi;
fecha │ hora
────────────────────────┼──────────────────────────────
1968-09-07 19:00:00-04 │ 1900-01-01 10:00:00-04:42:46
(1 fila)
alvherre=# select fecha::date, hora::time, fecha::date + hora::time from magi;
fecha │ hora │ ?column?
────────────┼──────────┼─────────────────────
1968-09-07 │ 10:00:00 │ 1968-09-07 10:00:00
(1 fila)
Observa que los valores de los husos horarios son "divertidos". Querrás
ajustar eso, quizás. Puedes usar el operador AT TIME ZONE; mira el
manual y experimenta un poco a ver si encuentras algo que tenga sentido.
Considera que el tipo "time" no lleva huso horario, en cambio "time with
time zone" sí lo lleva. Igualmente, el tipo "timestamp" no lleva huso
horario, y "timestamp with time zone" sí lo lleva.
Considera también que un dato con huso horario significa "un dato que
está almacenado en UTC y que se convierte al huso horario configurado en
el parámetro TimeZone al momento de mostrarlo". Al momento de guardar,
el dato se transforma desde el parámetro TimeZone a UTC. Si no tienes
este efecto en cuenta, puede ser un poco confuso.
--
Álvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripcin:
http://www.postgresql.org/mailpref/pgsql-es-ayuda
From | Date | Subject | |
---|---|---|---|
Next Message | Lazaro Garcia | 2016-10-06 20:57:47 | Pruebas de carga PostgreSQL vs SQLServer |
Previous Message | Sebastián | 2016-10-06 17:58:51 | Access como frontend |