Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-03-2009
tebre tebre is offline
Miembro
 
Registrado: nov 2008
Posts: 93
Poder: 16
tebre Va por buen camino
Querys entre Fechas

hola. antes de preguntar siempre busco en el foro ahora me tope con hacer consultas entre fechas y me tope con las siguientes respuestas de como se pueden hacer
Código SQL [-]where Year(Fecha) = 2009 and Month(Fecha) in (1, 2, 3)

Código SQL [-]
where Convert(char(8),Fecha,112) between '20090301' and '20090303' yo pensaba hacerlo de la sigueinte manera...tener 2 label uno que me guardela fecha de inicio y otra la fecha de fin que se seleccione para hacer la consulta quesera seleccionada de dos datetimepicker. el problema radica que por ejemplo si quero aplicar la segunda opcion que encontrecomo cambio 12/05/2009 a '20090512' para que funcione... si alguien me pudiera explicar como funcionan las dos sentencias SQL.. gracias...
__________________
By tebre
Responder Con Cita
  #2  
Antiguo 26-03-2009
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Si utilizas parámetros, no tendrías que hacer ninguna conversión y solo necesitarías dos DateTimepickers:

Código Delphi [-]
...
 SQL.Add('Where Fecha between :FechaInicio and :FechaFin');
...
 parameters.parambyname('FechaInicio').Value := UnDateTimepIcker.Date; //datetime
 parameters.parambyname('FechaFin').Value := OtroDateTimepIcker.Date;


Pero, si todavía quieres convertir la fecha a cadena, puedes utilizar la función "FormatDateTime":

Código Delphi [-]
 ...
 SQL.Add('Where Convert(char(8), Fecha, 112) between '+QUotedStr(FormatDateTime('yyyymmdd', UnDateTimePicker.Date)));
 SQL.Add(' and '+QUotedStr(FormatDateTime('yyyymmdd', OtroDateTimePicker.Date)));
...
__________________


Última edición por ContraVeneno fecha: 26-03-2009 a las 19:56:46.
Responder Con Cita
  #3  
Antiguo 26-03-2009
tebre tebre is offline
Miembro
 
Registrado: nov 2008
Posts: 93
Poder: 16
tebre Va por buen camino
parametros

hola contraveneno gracias por responder tu siempre tan oportuno...

y si cuando guardo los datos lo guardo por medio de parametros pero me guarda la fecha seguida con la hora...la pregunta es si utilizo este codigo asi como lo tienes no me causara problemas con la hora que tengo almacenado en el campo???
__________________
By tebre
Responder Con Cita
  #4  
Antiguo 26-03-2009
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
con la primer opción sí hay que tener cuidado con la hora. Pero bastaría con ponerle la hora 00:00 a un datetimpicker y la hora 23:59 al otro y con eso ya no habría problema.

Con la conversión a cadena utilizando CONVERT, tampoco hay problema, ya que el estilo 112 de SQL Server no considera la hora.

Con las funciones Year y Month de SQL Server tampoco importa la hora:

Código Delphi [-]
uses DateUtils;
...
 SQL.Add('where Year(Fecha) = :Year and Month(Fecha) between :MesInicio and :mesFin');
Parameters.ParamByName('Year').Value := YearOf(UnDateTimePicker.Date);
Parameters.ParamByName('MesInicio').Value := MonthOf(UnDateTimePicker.Date);
Parameters.ParamByName('mesFin').Value := MonthOf(UnDateTimePicker.Date);
El problema con esta forma es cuando se queire consultar de diciembre de un año a un mes de otro año...

como verás, hay muuuuuuuuuchas opciones.

yo prefiero esta:
Código Delphi [-]
...
 SQL.Add('Where Fecha between :FechaInicio and :FechaFin');
...
 parameters.parambyname('FechaInicio').Value := UnDateTimepIcker.Date; 
parameters.parambyname('FechaFin').Value := OtroDateTimepIcker.Date;
poniendo la hora 00:00 a un datetimpicker y la hora 23:59 al otro
__________________

Responder Con Cita
  #5  
Antiguo 26-03-2009
tebre tebre is offline
Miembro
 
Registrado: nov 2008
Posts: 93
Poder: 16
tebre Va por buen camino
probando.......

Código Delphi [-]
 
procedure TUpruebaaa.Button1Click(Sender: TObject);
begin
 With Datos.QryPrueba do begin
  If active then close;
     SQL.Clear;
     SQL.Add('SELECT FolioSolicitud,ClaveDireccion ');
     SQL.Add('FROM Solicitud');
     SQL.Add('Where FechaSolicitud between :Fechainicio and :FechaFin');
     parameters.parambyname('Fechainicio').Value := DateTimepIcker1.Date;
     parameters.parambyname('FechaFin').Value := DateTimepIcker2.Date;
     ExecSQL;
  end;
end;

quiero sacar los folio entre fechar por ejemplo
fechasolicitud:
01/02/2009 13:47:00
24/02/2009 13:47:00
24/03/2009 13:47:00
24/03/2009 13:47:00
24/03/2009 13:47:00

que me saque 01/02/2009 y 24/02/2009

datetimePicker1:
propiedad time 00:00

datetimepicker2:
propiedad time 23:59

ayudaaaa..no me muestra nada
__________________
By tebre
Responder Con Cita
  #6  
Antiguo 26-03-2009
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Las instrucciones de Selección, se ejecutan con "Open"

las instrucciones para modificar, insertar o eliminar, se ejecutan con "ExecSQL".

__________________

Responder Con Cita
  #7  
Antiguo 26-03-2009
tebre tebre is offline
Miembro
 
Registrado: nov 2008
Posts: 93
Poder: 16
tebre Va por buen camino
jejejeje que verguenza ya esta gracias..contraveneno asi estoy aprendiendo
__________________
By tebre
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
slq entre dos fechas comparar fechas taru MySQL 2 30-07-2007 16:10:36
Entre fechas erick_jesus Impresión 1 29-05-2006 19:10:50
Querys entre 2 BBDD diferentes CHiCoLiTa Conexión con bases de datos 9 16-11-2005 14:30:15
dias entre dos fechas davidgaldo Varios 5 19-05-2005 21:02:03


La franja horaria es GMT +2. Ahora son las 22:30:11.


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