From: | Jaime Casanova <jaime(at)2ndquadrant(dot)com> |
---|---|
To: | Fernando Siguenza <fsigu(at)hotmail(dot)com> |
Cc: | Foros Postgre Ecuador <ecpug(at)postgresql(dot)org> |
Subject: | Re: Trabajar con campos tipo fecha |
Date: | 2010-06-04 07:09:17 |
Message-ID: | AANLkTilkrrsG-0OR1Jv0jHxaPwmy3tsy5pJH4UA_dCQ6@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | ecpug |
2010/6/2 Fernando Siguenza <fsigu(at)hotmail(dot)com>:
> Amigos como estan, tengo un problema al trabajar con campos de tipo fecha,
> tengo una tabla con un campo fecha de tipo date, cuando almaceno la
> informacion aqui no se porque se almacena en el formato año dia y mes, lo
> raro que en otra tabla igual de tipo date me almacena la informacion en
> formato año mes y dia.
>
> Como puedo configurar para que siempre me almacene en un solo formato??
>
PostgreSQL siempre almacena la fecha en el mismo formato: año-mes-dia
lo que ocurre es que cuando vas a mostrar la fecha o vas a ingresar
una fecha usa la variable DATESTYLE (que esta configurada en el
archivo postgresql.conf y que puedes modificar manualmente mediante el
comando SET) para determinar como la va a mostrar o como interpretar
la entrada...
la variable DATESTYLE tiene dos componentes: formato de salida,
formato de entrada (ie: 'iso, mdy')
el primer componente de DATESTYLE controla como se vera la fecha al
mostrarla. por ejemplo, el predeterminado ISO muestra la fecha en
formato año-mes-dia... formatos de salida validos son: ISO, SQL,
postgres, german
el segundo componente controla el formato de entrada y basicamente le
dice como interpretar la entrada. Por ejemplo, el predeterminado MDY
le indica que primero debe esperar el mes, luego el dia y al final el
año. formatos de entrada validos son: MDY, DMY, YMD
para saber como esta seteado DATESTYLE ejecuta: show datestyle;
para cambiar el valor de DATESTYLE ejecuta: SET datestyle TO 'iso, dmy';
o solo uno de los componentes: SET datestyle TO 'sql'; o SET datestyle TO 'ymd';
intenta jugar con esos valores un poco para que veas lo que resulta al
cambiarlos...
> Igual en la primera opcion en la que me almacena año dia y mes tengo datos
> como este
> 2010-06-05
> 2010-07-05
> 2010-08-05
>
mmm... seguro? no consigo ese resultado de salida con ninguno de los
valores de datestyle, podrias mostrar el resultado de ejecutar: SHOW
DATESTYLE;
honestamente, pienso que has grabado mal los datos trataste de grabar
datos en formato 'dd-mm-yyyy' (ej: 06-05-2010) pero como el formato de
entrada predeterminado de postgres es MDY el entendio que el 6 era el
mes y el 5 el dia. deberias haber tenido problemas al tratar de grabar
13-05-2010
una forma de probar mi teoria es ejecutar (encontraras que lo que
crees es el dia en realidad esta grabado como mes y viceversa):
select extract(day from fecha), extract(month from fecha),
extract(year from fecha)
from tabla
> y cuando hago una consulta y pongo algo asi
> select * from tabla where fecha = to_date(''20100507,'yyyymmdd')
>
estas cayendo en el mismo problema
> no me da ningun registro, cuando me deberia dar al menos uno.
>
no, no deberia. por que el 5 que tu crees es el mes esta grabado como dia
> Mi otra duda como seria la forma correcta de hacer las consultas sobre
> campos de tipo fecha??
>
select * from tabla where fecha = '2010-05-07'
si lo pones asi, postgres adivina facilmente: año-mes-dia
--
Jaime Casanova www.2ndQuadrant.com
Soporte y capacitación de PostgreSQL
From | Date | Subject | |
---|---|---|---|
Next Message | mauricio.montufar | 2010-06-04 14:00:55 | Capacitacion |
Previous Message | Jaime Casanova | 2010-06-03 23:14:49 | Re: migrar base Oracle a PostgreSQL |