Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Sumar TimeStamp en la sección Where (https://www.clubdelphi.com/foros/showthread.php?t=10649)

Ismael 25-05-2004 16:49:25

Sumar TimeStamp en la sección Where
 
Hola a todos,

Soy nuevo en este foro y lo primero es dar las gracias a todos por las respuestas que en el mismo he encotrado, me han sido de mucha ayuda.

Mi pregunta es la siguiente:

¿Como puedo hacer operaciones con campos de tipo TimeStamp en la sección where de una sentencia Select?

Mi intención es realizar un prodimiento almacenado que me indique si una cita con una duración está dentro las citas ya grabada en la tabla (Agenda)

Los campos que intervienen en la consulta son:
FECHA (TimeStamp) fecha de la cita.
HORA (TimeStamp) hora de la cita.
DURACION (TimeStamp) duración de la cita.

El procedimiento que he implementado (pero que no compila) es el siguiente:

Create procedure Periodo_Ocupado(REFCODEMPLEADO VARCHAR(16),
REFCODDELEGACION VARCHAR(16),
FECHA TIMESTAMP,
HORA TIMESTAMP,
DURACION TIMESTAMP)
RETURNS (Ocupado INTEGER)
AS
DECLARE VARIABLE FechaINI TIMESTAMP;
DECLARE VARIABLE FechaFIN TIMESTAMP;
BEGIN
FechaINI = :FECHA + :HORA;
FechaFIN = :FECHA + :HORA + : DURACION;
Select count(*) from AGENDA
WHERE
(FECHA+HORA > :FechaINI and FECHA+HORA < :FechaFIN) OR
(FECHA+HORA+DURACION > :FechaINI and FECHA+HORA+DURACION < :FechaFIN)
INTO :Ocupado;
END;

El error que me da es "Expression evaluation not supported".

Alguien me podría indicar si IB admite las operaciones con Fecha y en caso afirmativo como se implementan.

Muchas gracia y un saludo
Ismael.

guillotmarc 25-05-2004 17:05:40

Hola.

Puedes usar una UDF (funciones adicionales disponibles en librerias .dll). Por ejplo, Firebird viene con la fbudf.dll, que incorpora funciones que te pueden ser utiles, como por ejeplo. AddHour, AddMinute, AddSecond. Mira el archivo fbudf.sql en la carpeta /udf de Firebird, para ver las funciones que incorpora, y su declaración.

Estas funciones, junto con la estándar extract que soporta directamente el motor, te permitirán hacer lo que deseas. Ejplo. extract(hour from data) te devuelve un entero con la hora.

NOTA: Si no usas Firebird, puedes usar una de las que encontrarás en esta Web http://www.cvalde.net/misc/packages_and_utilities.htm

Saludos.

Ismael 25-05-2004 18:59:23

Se que estoy un poco pez en este asunto. No utilizo FireBird (lo estoy empezando a ver con el manual que le recomendaste a otro forista) utilizo Interbase 6.0. ¿Puedo utilizar la libreria de funciones que me has recomendado en Interbase 6.0? ¿Como se añade al motor de base de datos estas librerías?

Siento hacer esta pregunta de tan poco nivel, pero espero mejorar pronto en este tema.

Muchas gracias y un saludo
Ismael

jachguate 25-05-2004 19:26:36

Cita:

Empezado por Ismael
¿Puedo utilizar la libreria de funciones que me has recomendado en Interbase 6.0?

Quizas no haya problema, aunque algun tipo de dato o de asignación de parámetros podria ocasionar conflicto. Porque no saltas a firebird de una vez y te ahorras el paso por interbase. Igual si lo estas aprendiendo, mejor ve a la últma versión de una vez....

Cita:

Empezado por Ismael
¿Como se añade al motor de base de datos estas librerías?

Las funciones de la librería se "registran" en la base de datos. Regularmente cuando descargues una librería, vas a hallar también un script que ya tiene las sentencias para registrar las funciones. Si queres hacerlo "a mano" investigá sobre la sentencia

declare external function

Cita:

Empezado por Ismael
Siento hacer esta pregunta de tan poco nivel, pero espero mejorar pronto en este tema.

No te preocupes, todos hemos iniciado alguna vez. Lo importante es que tu actitud sea la de aprender y hacer la parte de la tarea que te toca... investigación, pruebas, etc., que es una parte que creo que tenes.
Cita:

Empezado por Ismael
Muchas gracias y un saludo

Igualmente...

Hasta luego.

;)


La franja horaria es GMT +2. Ahora son las 12:11:31.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi