Re: '1 year' = '360 days' ????

From: "Ricardo Perez Lopez" <ricpelo(at)hotmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Cc: arturo(at)llanquihuen(dot)cl
Subject: Re: '1 year' = '360 days' ????
Date: 2004-10-22 18:03:04
Message-ID: BAY15-F23BdyFj9ZYht000074ad@hotmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


>From: Arturo Llanquihuén Martinez <arturo(at)llanquihuen(dot)cl>
>To: "Ricardo Perez Lopez"
><ricpelo(at)hotmail(dot)com>,<pgsql-es-ayuda(at)postgresql(dot)org>
>Subject: Re: [pgsql-es-ayuda] '1 year' = '360 days' ????
>Date: Fri, 22 Oct 2004 11:04:08 -0300
>
>hola ricardo

Hola, Arturo. Gracias por responder.

>de partida yo comenzaria con leerme todo lo referente a fechas y horas en
>la
>documentacion aca.
>http://www.postgresql.org/docs/7.4/static/datatype-datetime.html
>http://www.postgresql.org/docs/7.4/static/functions-formatting.html
>http://www.postgresql.org/docs/7.4/static/functions-datetime.html

Gracias por la sugerencia. Ya le había dedicado muuuuucho tiempo a mirar esa
documentación antes de dirigirme a la lista :)

>referente a la
>pregunta 1
>no encuentro logico consultar por '1 year' ya que no es una constante,tu
>mismo te das cuenta que depende de si es bisiesto o no, osea el sistema no
>tiene referencia para calcular eso sin mas parametro.

En eso estoy de acuerdo contigo: un año tiene 365 ó 366 si es bisiesto, y
eso el sistema no lo sabe. Pero... ¿por qué 360 días exactamente? ¿Por qué
me deja comparar años con días, si no tiene sentido?

>pregunta 2
> creo que leyendo la info te quedara mas claro como realizar tus consultas
>y
>como dar formato a la entrada y salida de valores de fecha.

Evidentemente, lo más adecuado parece ser usar la función age, pero aún así
no entiendo por qué hay dos maneras distintas, y que encima dan resultados
diferentes.

>pregunta 3 yo usaria la funcion age.

Igual que yo... pero imagina que el intervalo no proviene de la diferencia
entre dos timestamps. En ese caso, no podría usar la función age, puesto que
el age sólo sirve para calcular la diferencia entre dos timestamps. Si yo lo
que tengo es un intervalo '@366 days', ¿no existe alguna manera de convertir
dicho intervalo en uno que diga '1 year 1 day'? La función age,
naturalmente, no lo hace (no es su misión).

>
>Saludos.

Saludos, y gracias de todas formas.

>----- Original Message -----
>From: "Ricardo Perez Lopez" <ricpelo(at)hotmail(dot)com>
>To: <pgsql-es-ayuda(at)postgresql(dot)org>
>Sent: Thursday, October 21, 2004 1:42 PM
>Subject: [pgsql-es-ayuda] '1 year' = '360 days' ????
>
>
> > Saludos a toda la lista.
> >
> > Soy un principiante en PostgreSQL, que está actualmente liado
>aprendiendo
> > cómo funcionan las fechas, las horas, los timestamps y los intervalos.
> >
> > El caso es que tengo tres preguntas que haceros:
> >
> > PRIMERA:
> > --------------
> >
> > Resulta que he comprobado que, para PostgreSQL, un año son 360 días:
> >
> > SELECT '1 year'::timestamp = '360 days'::timestamp;
> >
> > ?column?
> > -------------
> > t
> >
> > Me he quedado de piedra. Yo creía que un año eran 365 días, o 366 si es
> > bisiesto. ¿Es eso normal?
> >
> >
> > SEGUNDA:
> > ---------------
> >
> > Cuando quiero comprobar cuánto tiempo ha pasado entre dos fechas, tengo
>dos
> > opciones (que dan resultados diferentes):
> >
> > SELECT '30-09-04'::timestamp - '30-09-03'::timestamp,
> > age('30-09-04'::timestamp, '30-09-03'::timestamp);
> >
> > ?column? | age
> > -------------------------------
> > @ 366 days | @ 1 year
> >
> > Los resultados son diferentes, porque si los comparamos:
> >
> > SELECT ('30-09-04'::timestamp - '30-09-03'::timestamp) =
> > age('30-09-04'::timestamp, '30-09-03'::timestamp);
> >
> >
> > ?column?
> > --------------
> > f
> >
> > Naturalmente, da falso, porque como digo en la primera pregunta, un año
>para
> > PostgreSQL consta de 360 días.
> >
> > La pregunta es: ¿es ésto normal? ¿Cuál de los dos métodos es el
>correcto,
>o
> > el más adecuado? ¿Restar timestamps? ¿O usar la función age?
> >
> >
> > TERCERA:
> > --------------
> >
> > Como comento en la segunda pregunta, cuando hago:
> >
> > SELECT '30-09-04'::timestamp - '30-09-03'::timestamp;
> >
> > el resultado es:
> >
> > ?column?
> > --------------
> > @ 366 days
> >
> > La pregunta es: ¿no existe alguna manera de "normalizar" el resultado,
>de
> > forma que dijera:
> >
> > @ 1 year 1 day
> >
> > ?
> >
> > Me parece que sería más correcto "@ 1 year 1 day" que "@ 366 days". ¿No
>hay
> > alguna manera de conseguirlo?
> >
> > Gracias a todos de antemano.
> >
> > Ricardo.
> >
> > _________________________________________________________________
> > Moda para esta temporada. Ponte al día de todas las tendencias.
> > http://www.msn.es/Mujer/moda/default.asp
> >
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 2: puedes desuscribirte de todas las listas simultáneamente
> > (envíe "unregister SuDirecciónDeCorreo" a majordomo(at)postgresql(dot)org)

_________________________________________________________________
La información más fresca desde diferentes puntos de vista en la Revista de
Prensa de MSN. http://es.newsbot.msn.com/

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Martín Marqués 2004-10-22 19:32:31 Re: Indice para columna date
Previous Message Jaime Casanova 2004-10-22 17:25:01 Re: '1 year' = '360 days' ????