Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-09-2006
Avatar de Oraxtar
Oraxtar Oraxtar is offline
Registrado
 
Registrado: sep 2006
Posts: 4
Poder: 0
Oraxtar Va por buen camino
restar fechas sql

Hola amigos del foro, tengo el siguiente problema y espero me puedan ayudar. Estoy realizando un proyecto en el cual manejo informacion de medicamentos. Lo que pretendo hacer es un reporte que me muestre los medicamentos que van a caducar con un mes de anterioridad manejando una query. Estoy trabajando con Delphi 7 y mis tablas estan hechas en IB 6.
Estuve chencando el foro pero no puede entontrar algo. El codigo que tengo ahora es este :

fecha:=datetostr(date);
frmrepcad.IBQuery1.Close;
frmrepcad.IBQuery1.SQL.Clear;
frmrepcad.IBQuery1.SQL.Add('select * from medicamento where fecha_cad-:fecha1 between 1 and 30');
frmrepcad.IBQuery1.ParamByName('fecha1').AsDateTime:=strtodatetime(fecha);
frmrepcad.IBQuery1.open;
frmrepcad.QuickRep1.Preview;

Con este codigo me marca un error, espero me puedan ayudar.
Responder Con Cita
  #2  
Antiguo 30-09-2006
ilichhernandez ilichhernandez is offline
Miembro
 
Registrado: oct 2005
Posts: 277
Poder: 19
ilichhernandez Va por buen camino
Los campos fecha_cad y fecha 1 son tipo date ?? ...... se que es ua pregunta rara pero he visto fechas en formato string tambien..
en que formato las guardas (01122006 o 20061201)
__________________
[Lo que a veces es tan facil, a veces parece imposible]

Última edición por ilichhernandez fecha: 30-09-2006 a las 04:45:25.
Responder Con Cita
  #3  
Antiguo 30-09-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 23
vtdeleon Va por buen camino
Saludos

No entiendo por que un parametro justo despues de un campo, ahi es que esta el error.

Código SQL [-]
select * from medicamento where fecha_cad between :fechahoy and fechahoy+30
Esta consulta mostrará los medicamentos qeu se van a vences dentro de los proximos 30 dias.
"Fechahoy" como su nombre lo dices es un parametro en la que asignaras la fecha actual o cualquier otra fecha si lo consideras oportuno.

Pd:Trata de usar las etiquetas para resaltar el codigo que utilices. Dale clic a los link que tengo en mi firma y chequea como se utilizan. Despues de eso, edita tu mensaje de mas arriba y haz la prueba. BIENVENID@ al Club
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!

Última edición por vtdeleon fecha: 30-09-2006 a las 10:10:34.
Responder Con Cita
  #4  
Antiguo 01-10-2006
Avatar de Oraxtar
Oraxtar Oraxtar is offline
Registrado
 
Registrado: sep 2006
Posts: 4
Poder: 0
Oraxtar Va por buen camino
Saludos ilichhernandez respecto a la pregunta que me haces, si, el campo que tengo en mi tabla medicamento fecha_cad es de tipo date, y el parametro fecha1 es de tipo datetime (me parece que asi lo cheque en otro tema parecido, lo utilice en otra query para generar otro reporte y me funciono perfectamente). y en lo referente a el formato me parece que es '01/05/06'.

Espero me puedas ayudar, que estoy medio confundido
Responder Con Cita
  #5  
Antiguo 01-10-2006
Avatar de Oraxtar
Oraxtar Oraxtar is offline
Registrado
 
Registrado: sep 2006
Posts: 4
Poder: 0
Oraxtar Va por buen camino
Que onda vtdeleon, gracias por tu respuesta, pero me marca un error, probe el codigo que me sugeriste, pero me dice que la columna fecha1 es desconocida.

Código Delphi [-]
frmrepcad.IBQuery1.Close;
    frmrepcad.IBQuery1.SQL.Clear;
    frmrepcad.IBQuery1.SQL.Add('select * from medicamento where fecha_cad between :fecha1 and fecha1+30');
    frmrepcad.IBQuery1.ParamByName('fecha1').AsDateTime:=strtodatetime(fecha);
    frmrepcad.IBQuery1.open;
    frmrepcad.QuickRep1.Preview;

despues probe con :
Código Delphi [-]
frmrepcad.IBQuery1.SQL.Add('select * from medicamento where fecha_cad between :fecha1 and :fecha1+30');

poniendole (, y me decia que el campo fecha1+30 no existe.

La verdad, es la primera vez que manejo delphi e IB. Agradeceria la ayuda que me puedan dar.
pd. gracias por lo de las etiquetas.
Responder Con Cita
  #6  
Antiguo 01-10-2006
ilichhernandez ilichhernandez is offline
Miembro
 
Registrado: oct 2005
Posts: 277
Poder: 19
ilichhernandez Va por buen camino
En este link aparecen algo que te puede servir.
http://groups.msn.com/ce77cj5fut58ai...6&all_topics=1
__________________
[Lo que a veces es tan facil, a veces parece imposible]
Responder Con Cita
  #7  
Antiguo 01-10-2006
aledieb aledieb is offline
Miembro
 
Registrado: jun 2005
Ubicación: Buenos Aires, Argentina
Posts: 141
Poder: 19
aledieb Va por buen camino
El error da porque falta : en el 2° fecha1

Código Delphi [-]
frmrepcad.IBQuery1.SQL.Add('select * from medicamento where fecha_cad between :fecha1 and fecha1+30');

Deberia ser:

Código Delphi [-]
frmrepcad.IBQuery1.SQL.Add('select * from medicamento where fecha_cad between :fecha1 and :fecha1+30');
__________________
Suerte
Alejandro
Responder Con Cita
  #8  
Antiguo 01-10-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 23
vtdeleon Va por buen camino
Saludos

Ess extraño que el error haga referencia a una columna cuando en si es un parametro

Lo que puedo sugerir es que elimines ese query y agregues otro. Entonces prueba la consulta.
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #9  
Antiguo 01-10-2006
Avatar de Oraxtar
Oraxtar Oraxtar is offline
Registrado
 
Registrado: sep 2006
Posts: 4
Poder: 0
Oraxtar Va por buen camino
Saludos.

parece ser que ya esta .
No se porque me mandaba ese error que te comente vtdeleon, pero se arreglo separando el operador '+' de el paramero fecha1, asi como les muestro :

Código Delphi [-]
    frmrepcad.IBQuery1.SQL.Add('select * from medicamento where fecha_cad between :fecha1 and :fecha1 + 30');

y poniendo los : como comento alejandro (aledieb).

Por el momento es todo. Gracias a todos por su ayuda .
Responder Con Cita
  #10  
Antiguo 16-01-2008
Jonathan96 Jonathan96 is offline
Miembro
 
Registrado: ene 2008
Posts: 18
Poder: 0
Jonathan96 Va por buen camino
Restar fecha

Tengo un problema ocupo restar la fecha ya existente en la BD con la fecha actual como hacerlo en SQL
Responder Con Cita
  #11  
Antiguo 16-01-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Cita:
Empezado por Jonathan96 Ver Mensaje
Tengo un problema ocupo restar la fecha ya existente en la BD con la fecha actual como hacerlo en SQL
Tu pregunta no es exactamente el tema tratado en el hilo, deberías haber abierto otro hilo (tómalo como sugerencia para la próxima vez).

¿qué base de datos usas?, porque cada motor tiene sus peculiaridades, en este caso es "cómo obtener la fecha actual".

En MySql se usa GetDate()
en Firebird puede usarse Current_date

Así en FB quedaría:
Código SQL [-]
 select  current_date as Fecha_Actual, fecha, (current_date - fecha) as Diferencia
from tabla

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #12  
Antiguo 16-01-2008
Jonathan96 Jonathan96 is offline
Miembro
 
Registrado: ene 2008
Posts: 18
Poder: 0
Jonathan96 Va por buen camino
La base de datos que uso es SQL server 2005, y tu respuesta me da un poco de problemas, Delphi me dice que la columna Fecha actual no existe este es el codigo:
GetDate() as Fecha_Actual, (Fecha_Actual - dbo.Empleados.FechaIngreso) as Diferencia.
Responder Con Cita
  #13  
Antiguo 16-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Porque no existe, claro está.

La consulta sería algo así:
Código SQL [-]
select GetDate() as FechaActual, (GetDate() - dbo.Empleados.FechaIngreso) DiasEmpleado
  from Empleado
 where activo = 1;

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
  #14  
Antiguo 16-01-2008
Jonathan96 Jonathan96 is offline
Miembro
 
Registrado: ene 2008
Posts: 18
Poder: 0
Jonathan96 Va por buen camino
Consulta Sql

Gracias ya habia descubierto mi error, De todos modos gracias!
Responder Con Cita
  #15  
Antiguo 16-01-2008
Jonathan96 Jonathan96 is offline
Miembro
 
Registrado: ene 2008
Posts: 18
Poder: 0
Jonathan96 Va por buen camino
Question Restar fecha

Mi problema continua yo lo que ocupo saber es la diferencia en meses y años que hay de una fecha a la actual!!! yo utilizo un DateDiff el cual solo me debuelve o meses o años.
Y yo ocupo que me los debuelva juntos por ejemplo que si una fecha es 01/01/2007 y la actual es 02/01/2008 me debelva 1/1 osea un año y un mes.



Y la verdad que no tengo idea como hacerlo.
XFa ayudenme.
Responder Con Cita
  #16  
Antiguo 16-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Te recuerdo que la diferencia en años es la doceava parte de la diferencia en meses. También te recuerdo que las sentencias SQL de prácticamente todos los motores soportan operaciones aritméticas.

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
  #17  
Antiguo 21-01-2008
Jonathan96 Jonathan96 is offline
Miembro
 
Registrado: ene 2008
Posts: 18
Poder: 0
Jonathan96 Va por buen camino
Talking Gracias

He descubierto que con el mod y div lo podia hacer!! Por si alguien ocupa la cosulta
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como restar fechas User_Baja_2 Varios 11 17-09-2011 22:58:47
Restar Fechas jsanchez OOP 2 08-02-2006 20:29:55
Restar fechas majosf Conexión con bases de datos 11 16-11-2005 17:27:18
Restar fechas Acker Varios 4 07-11-2005 15:11:51
restar dos fechas seken Varios 4 16-08-2003 00:34:56


La franja horaria es GMT +2. Ahora son las 13:10:25.


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