Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-05-2004
Avatar de Ismael
Ismael Ismael is offline
Registrado
 
Registrado: may 2004
Posts: 3
Poder: 0
Ismael Va por buen camino
Question 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.
Responder Con Cita
  #2  
Antiguo 25-05-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
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.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #3  
Antiguo 25-05-2004
Avatar de Ismael
Ismael Ismael is offline
Registrado
 
Registrado: may 2004
Posts: 3
Poder: 0
Ismael Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 25-05-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cool

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.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 08:01:51.


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
Copyright 1996-2007 Club Delphi