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 19-01-2009
manueltp manueltp is offline
Miembro
 
Registrado: mar 2008
Posts: 29
Poder: 0
manueltp Va por buen camino
Exclamation Consulta con fechas en firebird error!!!

hola que tal aki de nuevo con este problema de fechas....
quiero hacer un reporte con una consulta de rango de fechas.....
hago primero la consulta en la base de datos con sql y este codigo::

SELECT FECHA, NOMBRE, MEDICO, PRIMERAVEZ, PARTICULAR, ASEGURADORA
from PACIENTES
WHERE FECHA >= 01/01/2009 AND FECHA <=18/01/2009
y me da error ....

lo cambie asi....

SELECT FECHA, NOMBRE, MEDICO, PRIMERAVEZ, PARTICULAR, ASEGURADORA
from PACIENTES
WHERE FECHA >= CAST('01/01/2009' as date)
y este si me da resultados pero yo kiero un rango de fechas y pongo este:

SELECT FECHA, NOMBRE, MEDICO, PRIMERAVEZ, PARTICULAR, ASEGURADORA
from PACIENTES
WHERE FECHA >= CAST('01/01/2009' as date) and
FECHA <= CAST('18/01/2009' as date)

y me da error: ISC ERROR MESSAGE:
conversion error from string "18/01/2009"

no acepta dos conversiones en una misma linea o que sera? ....
es que no se como se hacen entonces las consultas para un rango de fechas
se los agradeceria demasido si me ayudaran ,....
me interesa demasiado.
Responder Con Cita
  #2  
Antiguo 19-01-2009
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cuando escribas valores de fecha literales para ser procesados por algún motor SQL, utiliza el formato ISO (aaaa-mm-dd), ya que de otra manera no tendrás seguridad de cuál de las cifras tomará como mes y cuál como día.

Saludos.

Al.
Responder Con Cita
  #3  
Antiguo 19-01-2009
Avatar de Kipow
Kipow Kipow is offline
Miembro
 
Registrado: abr 2006
Ubicación: Guatemala
Posts: 329
Poder: 19
Kipow Va por buen camino
Yo utilizo siempre el formato dd/mm/aaaa y no he tenido ningun problema.
Responder Con Cita
  #4  
Antiguo 19-01-2009
manueltp manueltp is offline
Miembro
 
Registrado: mar 2008
Posts: 29
Poder: 0
manueltp Va por buen camino
Question

gracias

yo utilo el IBOConsole y cuando hago insercion de fechas me acepta el dd/mm/aaaa, porque me pone asi al moneto de querer ingresar una fechas : / / .

entonces que cambios hago?????
no hay manera de realizar esta consulta de alguna manera con este formato??? o que modificacion le hago a la consulta...
Responder Con Cita
  #5  
Antiguo 19-01-2009
Avatar de Kipow
Kipow Kipow is offline
Miembro
 
Registrado: abr 2006
Ubicación: Guatemala
Posts: 329
Poder: 19
Kipow Va por buen camino
solo cambia el formato por mm/dd/aaaa

Código SQL [-]
SELECT FECHA, NOMBRE, MEDICO, PRIMERAVEZ, PARTICULAR, ASEGURADORA
from PACIENTES
WHERE FECHA >= CAST('01/01/2009' as date) and 
FECHA <= CAST('01/18/2009' as date)
Responder Con Cita
  #6  
Antiguo 19-01-2009
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por manueltp Ver Mensaje
gracias

yo utilo el IBOConsole y cuando hago insercion de fechas me acepta el dd/mm/aaaa, porque me pone asi al moneto de querer ingresar una fechas : / / .

entonces que cambios hago?????
no hay manera de realizar esta consulta de alguna manera con este formato??? o que modificacion le hago a la consulta...
Hola manueltp, de la forma que te ha indicado Al debería funcionarte la consulta por un rango de fechas, si lo haces de la otra forma tienes que pasarle con formato mm/dd/yyyy, el Cast no es necesario.

Código SQL [-]
SELECT FECHA, NOMBRE, MEDICO, PRIMERAVEZ, PARTICULAR, ASEGURADORA
from PACIENTES
WHERE FECHA >= '01/01/2009' AND FECHA <='01/18/2009'

SELECT FECHA, NOMBRE, MEDICO, PRIMERAVEZ, PARTICULAR, ASEGURADORA
from PACIENTES
WHERE FECHA >= '2009-01-01' AND FECHA <='2009-01-18'

//también puedes utilizar Between
 
SELECT FECHA, NOMBRE, MEDICO, PRIMERAVEZ, PARTICULAR, ASEGURADORA
from PACIENTES
WHERE FECHA Between '01/01/2009' AND '01/18/2009'

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #7  
Antiguo 20-01-2009
manueltp manueltp is offline
Miembro
 
Registrado: mar 2008
Posts: 29
Poder: 0
manueltp Va por buen camino
MUCHAS GRACIAS POR SU AYUDA , YA LO HICE Y SI ME DA LA CONSULTA

SE LOS AGRADEZCO ...
AHORA LA DUDA SERIA Y AL MOMENTO DE HACER LA CONSUTLA EN DELPHI
COMO DEBO ESPECIFICAR LOS CARACTERES O CON QUE FUNCION LA DEBO DE HACER ......

TENGO ESTE CODIGO ::

Código Delphi [-]
procedure TFFechas.Button1Click(Sender: TObject);
begin
      //ShortDateFormat := 'mm/dd/yyyy';
      try
         FReporte:=TFReporte.Create(self);
         FReporte.QryReporte1.SQL.Add('SELECT FECHA, NOMBRE, MEDICO, PRIMERAVEZ, PARTICULAR, ASEGURADORA ');
         FReporte.QryReporte1.SQL.Add('FROM PACIENTES ');
         FReporte.QryReporte1.SQL.Add('WHERE  FECHA >= '+ DateToStr(DTP1.Date)+' AND  FECHA <= '+ DateToStr(DTP2.Date)+' ORDER BY FECHA');
         FReporte.QryReporte1.Open;
         ShortDateFormat := 'mm/dd/yyyy';
         //QRPlaGen.Titulo.text := 'Hojas de Pago de Planillas';
         FReporte.RVP1.ExecuteReport(ReporteF1);
      finally
         FReporte.RVP1.Destroy;
      end;
end;


aver si esta bien o no
se los agradeceria.
Responder Con Cita
  #8  
Antiguo 20-01-2009
brandolin brandolin is offline
Miembro
 
Registrado: jul 2003
Ubicación: Mendoza
Posts: 324
Poder: 21
brandolin Va por buen camino
yo normalmente hago lo siguiente...
Código Delphi [-]
try
         FReporte:=TFReporte.Create(self);
         FReporte.QryReporte1.SQL.Add('SELECT FECHA, NOMBRE, MEDICO, PRIMERAVEZ, PARTICULAR, ASEGURADORA ');
         FReporte.QryReporte1.SQL.Add('FROM PACIENTES ');
         FReporte.QryReporte1.SQL.Add(format('WHERE  FECHA >= ''%s'' AND  FECHA <= ''%s'' ORDER BY FECHA', [DateToStr(DTP1.Date), DateToStr(DTP2.Date)]));
         FReporte.QryReporte1.Open;
         ShortDateFormat := 'mm/dd/yyyy';
         //QRPlaGen.Titulo.text := 'Hojas de Pago de Planillas';
         FReporte.RVP1.ExecuteReport(ReporteF1);
      finally
         FReporte.RVP1.Destroy;
      end;

solo introduzco la funcion format y me da mas claridad en la sentencia...
Responder Con Cita
  #9  
Antiguo 20-01-2009
manueltp manueltp is offline
Miembro
 
Registrado: mar 2008
Posts: 29
Poder: 0
manueltp Va por buen camino
muchas gracias ....
otra cosa mas:

pero el DataTimePicker tomaria la fecha como : dd/mm/aaaa
y como mm/dd/aaaa
no me daria error con la fecha de nuevo?????
Responder Con Cita
  #10  
Antiguo 20-01-2009
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
¿Y porqué no usar parámetros y BETWEEN?

Código SQL [-]
Select tus_campos
from tu_tabla
where campo_fecha BETWEEN :fecha1 AND fecha2

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #11  
Antiguo 20-01-2009
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola de nuevo, tienes que darle el formato a la fecha de tu DateTimePicker ya que te devolvera como dd/mm/yyyy, puedes utilizar también FormatDate y como te dije también puedes utilizar el Between en tu consulta.

Código Delphi [-]
procedure TFFechas.Button1Click(Sender: TObject);
begin
     try
         FReporte:=TFReporte.Create(self);         
         FReporte.QryReporte1.SQL.Add('SELECT FECHA, NOMBRE, MEDICO, PRIMERAVEZ, PARTICULAR, ASEGURADORA ');
         FReporte.QryReporte1.SQL.Add('FROM PACIENTES ');
         FReporte.QryReporte1.SQL.Add('WHERE FECHA BETWEEN '+QuotedStr(FormatDateTime('mm/dd/yyyy',DTP1.Date))+
         ' AND  '+ QuotedStr(FormatDateTime('mm/dd/yyyy',DTP2.Date))+' ORDER BY FECHA');
         FReporte.QryReporte1.Open;

         FReporte.RVP1.ExecuteReport(ReporteF1);
      finally
         FReporte.RVP1.Destroy;
      end;
end;

O utilizar parametros como te dice Delphius.

Código Delphi [-]
FReporte.QryReporte1.SQL.Add('SELECT FECHA, NOMBRE, MEDICO, PRIMERAVEZ, PARTICULAR, ASEGURADORA ');
         FReporte.QryReporte1.SQL.Add('FROM PACIENTES ');
         FReporte.QryReporte1.SQL.Add('WHERE FECHA BETWEEN :FECHAINI AND :FECHAFIN ORDER BY FECHA');
         FReporte.QryReporte1.ParamByName('FECHAINI').AsDate:=DTP1.Date;
         FReporte.QryReporte1.ParamByName('FECHAFIN').AsDate:=DTP2.Date;
         FReporte.QryReporte1.Open;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #12  
Antiguo 20-01-2009
manueltp manueltp is offline
Miembro
 
Registrado: mar 2008
Posts: 29
Poder: 0
manueltp Va por buen camino
muchas gracis por su ayuda .....
los implementare asi como me aconsejan ...
gracias
cualquier cosa escribo para su ayuda...
gracias
Responder Con Cita
  #13  
Antiguo 09-08-2010
MARLON1 MARLON1 is offline
Miembro
 
Registrado: nov 2007
Posts: 118
Poder: 17
MARLON1 Va por buen camino
Cita:
Empezado por Delphius Ver Mensaje
¿Y porqué no usar parámetros y BETWEEN?


Código SQL [-]Select tus_campos
from tu_tabla
where campo_fecha BETWEEN :fecha1 AND fecha2




Saludos,
Que tal Delphius:

Estoy utilizando el ejemplo que mencionas, pero me marca un error, "operacion no apicable" tendras alguna idea de por que me aparece el error, muchas gracias de antemano. Utilizo delphi 10.

Código SQL [-]
  QUERY1.Close;
   QUERY1.SQL.Clear;
   QUERY1.SQL.Add('SELECT * FROM REPDIARIO WHERE repfecha between :inicio and :final');
   query1.ParamByName('inicio').AsDate:=DateTimePicker1.Date;
   query1.ParamByName('final').AsDate:=DateTimePicker2.Date;
   QUERY1.Open;
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Consulta de fechas y horas con Firebird Jordy Firebird e Interbase 5 07-10-2004 16:51:52
Consulta con Fechas inetplus SQL 3 08-04-2004 21:09:41
Consulta por fechas omy SQL 2 16-12-2003 19:40:14
Consulta de fechas YolandaM SQL 6 26-07-2003 21:10:34
Consulta con Fechas cmgenny SQL 8 20-06-2003 21:48:25


La franja horaria es GMT +2. Ahora son las 15:44:44.


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