2 consultas acerca de fechas

From: Daniel Soto <daniel(dot)soto2k(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: 2 consultas acerca de fechas
Date: 2007-07-07 16:59:31
Message-ID: 468FC673.50809@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola.

Gracias a todos los que me ayudaron antes con mis preguntas sobre create
function.

Ahora, ya viendo cosas mas sencillas (reconozco que empece a construir
la casa por el tejado) tengo una duda acerca de las fechas.

Estoy haciendo una funcion la cual obtiene unos registros que se
encuentren entre cierto rango de fechas, por ejemplo desde el 07-05-2007
0:00:00 hasta el 20-07-2007 23:59:59. El usuario solo ingresa la fecha
como tal y el sistema es quien le agrega la hora (en otras bases de
datos, me asumia siempre hasta 20-07-2007 0:00:00 por lo que los
registros que hayan sido creados dentro de ese dia quedaban fuera, ya
que los registros se crean con fecha y hora).

Entonces, en mysql (la base da datos con que trabajaba antes) tenia un
procedimiento almacenado como este

create procedure mi_procedimiento
(
in codigo varchar(50),
in fechaBusqIni datetime,
in fechaBusqFin datetime
)
begin

set fechaBusqIni = ADDTIME(fechaBusqIni, '0:00:00');
set fechaBusqFin = ADDTIME(fechaBusqFin, '23:59:59');

select *
from movimientos
where codigoprod=codigo and
fecha_movimiento between fechaBusqIni and fechaBusqFin;

end;

Este procedimiento funcionaba en mysql. Ahora, en postgresql, como
debiera hacerlo? La primera pregunta es que ADDTIME no existe en
postgres, asi que hice esto:

create or replace function inventario.mi_funcion
(
in codigo varchar(50),
in fechaBusqIni date,
in fechaBusqFin date
)
returns void as $$
declare
hora_ini time;
hora_fin time;
fecha_ini timestamp;
fecha_fin timestamp;
begin
hora_ini:='0:00:00';
hora_fin:='23:59:59';
fecha_ini:=fechaBusqIni+hora_ini;
fecha_fin:=fechaBusqFin+hora_fin;

select *
from inventario.movimientos
where codigoprod=codigo and
fecha_movimiento between fechaBusqIni and fechaBusqFin;

end;
$$ LANGUAGE 'plpgsql' VOLATILE;

¿La "suma" de fechas que hice ahi (para agregarle la hora) es correcto?
Existe una manera mejor de hacerlo?

Ahora la otra pregunta, es que, en el analizador de consultas del
pgadmin, he querido llamar a mi funcion con select mi_funcion('01',
'2007/07/07','2007/07/07'); pero me sale el error

/ERROR: la función inventario.mi_funcion("unknown", "unknown",
"unknown") no es única at character 8
HINT: No se pudo escoger la función más adecuada. Puede desear agregar
conversiones explícitas de tipos.

/¿Como puedo llamar correctamente a una funcion definida de esa forma?

Un saludo y gracias.

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Arturo Munive 2007-07-07 17:30:47 Tamaño o dimension de un indice
Previous Message Gabriel Hermes Colina Zambra 2007-07-07 15:40:32 Re: duda con serial y bigserial