Re: Consulta sobre fechas TimeStamp

From: Hellmuth Vargas <hivs77(at)gmail(dot)com>
To: MKHotmail <mcanchas(at)hotmail(dot)com>
Cc: Lista Postgres ES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Consulta sobre fechas TimeStamp
Date: 2018-05-19 14:32:54
Message-ID: CAN3Qy4pOuR8AAnAAhpeFSMkVEHwbN3is-gUJj71DfQtqdcCfmQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola lista

Por regla general no se debe confiar en en casteo implícito de datos, como
buena práctica debe indicarse plenamente los tipos de datos para su
comparación (promoviendo al tipo de dato de la columna a comparar). Es más,
si somos rigurosos la expresión deberia ser:

Select * from mitabla where Fecha_TIMESTAMP between
to_timestamp('2018-05-18 00:00:00','YYYY-MM-DD HH24:MI:SS')
and cast('2018-05-19 00:00:00', 'YYYY-MM-DD HH24:MI:SS')

Ahora bien, el cierto que el índice sobre funciones también es eficaz, pero
debe considerarse que en la inserción y actualización tiene una pequeña
penalidad adicional por el hecho que debe calcularse la función para el
registro a almacenar en el índice y que todas las consultas que se hagan
sobre el campo deberían aplicar la función para aprovechar el mismo...
Entonces si siempre se filtra como DATE pues la columna no se debió definir
como TIMESTAMP sino directamente como DATE.

El vie., 18 de may. de 2018 5:01 PM, Micky Khan <mcanchas(at)hotmail(dot)com>
escribió:

> Y cual es la diferencia en hacerlo asi :
>
>
> Select * from mitabla where Fecha_TIMESTAMP between '2018-05-18' and
> '2018-05-19'
>
> El resultado que me arroja es el mismo...que los otros que me pasaste.
>
>
>
>
>
>
>
> ------------------------------
> *De:* Hellmuth Vargas <hivs77(at)gmail(dot)com>
> *Enviado:* viernes, 18 de mayo de 2018 19:32
> *Para:* Micky Khan
> *Cc:* FORO POSTGRES
> *Asunto:* Re: Consulta sobre fechas TimeStamp
>
> Hola Lista
>
>
> Tenemos dos maneras básicas de hacer una consulta que involucra timestamp
> contra un date:
>
> 1. date(timestamp)
>
> Select * from mitabla where date(Fecha_TIMESTAMP) =
> cast('2018-05-18' as date)
>
> Para tablas con gran cantidad de registros implica un indice sobre
> date(Fecha_TIMESTAMP)
>
> 2. between, mi preferido
>
> Select * from mitabla where Fecha_TIMESTAMP between
> cast('2018-05-18' as timestamp) and cast('2018-05-18' as timestamp)+
> cast('1 day' as interval)
>
> para tablas con gran cantidad de registros implica un indice sobre
> Fecha_TIMESTAMP
>
>
> Ahora bien, sin mas informacion como que tan grande es las tabla y como
> están distribuidos los datos, para poder sugerir un particionamiento sobre
> el campo Fecha_TIMESTAMP por ejemplo no podría aportar mucho mas...
>
>
>
>
>
> El 18 de mayo de 2018, 13:37, Micky Khan<mcanchas(at)hotmail(dot)com> escribió:
>
> Buenas.
>
>
> Una consulta; como es la manera correcta de tal manera que sea lo mas
> rápida posible de ejecutar una consulta
>
>
> Select * from mitabla where Fecha_TIMESTAMP = '2018-05-18'
>
>
>
> Mi campo fecha a consultar es de tipo TIMESTAMP y los datos que se envian
> para la consulta es de tipo DATE.
>
>
> Gracias por vuestra ayuda.
>
>
>
>
>
>
> --
> Cordialmente,
>
> Ing. Hellmuth I. Vargas S.
>
>
>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Hellmuth Vargas 2018-05-19 14:40:33 Re: Consulta sobre fechas TimeStamp
Previous Message Carlos Perez 2018-05-18 22:09:27 Re: Consulta sobre fechas TimeStamp