viernes, 19 de marzo de 2010

Postgres : calculo de 48 horas antes de una fecha (me sirvio para las Tx a Aduanas)

Aqui un pequeño ejemplo que me sirvio para calcular el tiempo que falta para que sean 48 horas (2 dias) antes de una fecha especifica.

La necesidad parte de que Aduanas permite el envio de informacion hasta 48 horas de la llegada de una nave, entonces como ssaber cuanto falta para esta hora limite?

Bueno asumiremos que la Nave llega a las 6 de la tarde (18:00 horas) y de ahi parten los calculos.


select
-- Fecha y hora de llegada
cast(f_eta || ' 18:00:00' as timestamp) as f_h_llegada,
-- Fecha y hora limite en que se debe de hacer el envio.
(cast(f_eta || ' 18:00:00' as timestamp) + '-48 hour') as fecha_envio,
-- tiempo faltante para que se cumplan las 48 horas antes de llegada la nave.
(cast(f_eta || ' 18:00:00' as timestamp) + '-48 hour') - now() as tiempo_limite_48_horas,
-- aqui determinamos si faltan dias o minutos para la fecha y hora limite case when now() > cast(f_eta || ' 18:00:00' as timestamp) + '-48 hour' then 'Te pasaste' else case when (now() + '24 hour') > cast(f_eta || ' 18:00:00' as timestamp) + '-48 hour' then 'solo minutos' else 'Aun a dias' end end as zz,

now(), f_eta
from itinerarios
where f_eta >= now()::date - 7
order by f_eta

Nota: Hay que tener en cuenta lo siguiente:

select now() + '12 hour';
select now() - '12 hour';

Este ultimo te da error, pero si pruebas lo siguiente el resultado es el que se desea:

select now() + '-12 hour';

3 comentarios:

Unknown dijo...

Hola, sera que alguien me podria ayudar a crear una funcion en postgre que me capture la fecha actual y que la fecha de caducidad ingresada me permita calcular ¿ Cuantos dias faltan para alcanzar la fecha de caducidad, desde la fecha actual ? y que se ejecute al consultar, registrar o modificar

Marcelino Guerrero dijo...

Vanessa, que es lo que tienes avaanzado?
Publica tu query y de acueerdo a eso te alcanzo comentarios...

Unknown dijo...

hola,algo distante en el tiempo pero por si alguien investiga al igual que yo con poner en el where fecha >=now() + '-48 hour' les servira