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 23-07-2010
Avatar de darkbits
darkbits darkbits is offline
Miembro
 
Registrado: may 2006
Posts: 280
Poder: 18
darkbits Va por buen camino
Ayuda SQL Between con rango de fechas

Un saludo grande al club ,
tengo problemas con esta consulta con rango de fechas

la DB es MySQL
en campo tiene el nombre de "fecha" es varchar ( no se si esto tiene algo que ver) esta lleno con datos dia/mes/año

donde sDateEdit1.text=01/07/2010 y sDateEdit2.text= 22/07/2010 son mis 2 rangos de fechas y cuando ejecuto la consulta no me da ni un resultado

please.. como soluciono este detalle, toy trabajando con delphi 6

Código SQL [-]
DM.MySqlRep.close;
_DM.MySqlRep.SQL.Text:='SELECT fecha, hora, operador, det_producto,serial, garantia, cantidad, cadaUno, venta_bs, venta_US,utilidad FROM detalle_venta, venta WHERE venta.pago="CREDITO" and venta.id_ventas=detalle_venta.id_ventas and venta.fecha BETWEEN :fechaInicio and :fechaFinal and venta.operador="'+DBLookupComboBox1.Text+'"order by fecha ASC';
_dm.MySqlRep.ParamByName('fechainicio').AsDateTime:=strtodate(sDateEdit1.text);
_dm.MySqlRep.ParamByName('fechaFinal').AsDateTime:=strtodate(sDateEdit2.text);
_DM.MySqlRep.open;

Muchisimas gracias por darme una mano!
Responder Con Cita
  #2  
Antiguo 23-07-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Lo mejor es que el campo fecha sea Date, si no siempre va a dar algun problema.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 23-07-2010
Nelet Nelet is offline
Miembro
 
Registrado: may 2003
Ubicación: Picassent - Valencia
Posts: 95
Poder: 21
Nelet Va por buen camino
Pregunto desde mi ignorancia de mySQL...¿las fechas no deben ir entre comillas?.
__________________
_____________________________________
And follow me to where the real fun is
Responder Con Cita
  #4  
Antiguo 23-07-2010
Avatar de Jac fcc
Jac fcc Jac fcc is offline
Miembro
 
Registrado: ene 2010
Posts: 33
Poder: 0
Jac fcc Va por buen camino
Me parece que el formato que usa MySql es aaaa/mm/dd
entonces las fechas en los editores serian:

sDateEdit1.text='2010/07/01' y sDateEdit2.text='2010/07/22'

la consulta por fechas siempre la coloco al final, sería;

Código Delphi [-]
DM.MySqlRep.close;
_DM.MySqlRep.SQL.Text:='SELECT fecha, hora, operador, det_producto,serial, garantia, cantidad, cadaUno, venta_bs, venta_US,utilidad FROM detalle_venta, venta WHERE venta.pago="CREDITO" and venta.id_ventas=detalle_venta.id_ventas and venta.operador="'+DBLookupComboBox1.Text+'"and venta.fecha BETWEEN :fechaInicio and :fechaFinal order by fecha ASC';
_dm.MySqlRep.ParamByName('fechainicio').AsDateTime:=strtodate(sDateEdit1.text);
_dm.MySqlRep.ParamByName('fechaFinal').AsDateTime:=strtodate(sDateEdit2.text);
_DM.MySqlRep.open;

yo trabajo con SQL asi que desconosco los detalles de sintaxis, pero prefiero particionar el texto de la consulta:
Código Delphi [-]
_DM.MySqlRep.SQL.Text:='SELECT fecha, hora, operador, det_producto,serial, garantia, cantidad, cadaUno, venta_bs, venta_US,utilidad FROM detalle_venta, venta';
_DM.MySqlRep.SQL.Text:='FROM detalle_venta, venta';
_DM.MySqlRep.SQL.Text:='WHERE venta.pago="CREDITO" and venta.id_ventas=detalle_venta.id_ventas and venta.operador="'+DBLookupComboBox1.Text+'"and venta.fecha BETWEEN :fechaInicio and :fechaFinal'; 
_DM.MySqlRep.SQL.Text:='order by fecha ASC';

O algo similar que permita obtener el mismo resultado pero que se vea legible.
__________________
Para una vida sana hay que ocupar 30 de 24hrs diarias...Ups!
Responder Con Cita
  #5  
Antiguo 23-07-2010
calco_hugo calco_hugo is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
calco_hugo Va por buen camino
he tenido en algun momento un problema parecido, pero creo que la solucion esta por el lado de convertir el tema en el select o el where, CONVERT o TO_DATE, la verdad estoy hasta las manos con unas cosas que el jefe me pidio para el martes pasado (jeje), pero buscaria por ese lado, si no haria el codigo, si no podes avisame y trato de hacerlo
hugo
Responder Con Cita
  #6  
Antiguo 23-07-2010
Avatar de darkbits
darkbits darkbits is offline
Miembro
 
Registrado: may 2006
Posts: 280
Poder: 18
darkbits Va por buen camino
solucionado gracias a todo amigos..
Responder Con Cita
  #7  
Antiguo 23-07-2010
Avatar de Jac fcc
Jac fcc Jac fcc is offline
Miembro
 
Registrado: ene 2010
Posts: 33
Poder: 0
Jac fcc Va por buen camino
podrias indicar como se solucionó?

solo curiosidad, gracias.
__________________
Para una vida sana hay que ocupar 30 de 24hrs diarias...Ups!
Responder Con Cita
  #8  
Antiguo 23-07-2010
Avatar de darkbits
darkbits darkbits is offline
Miembro
 
Registrado: may 2006
Posts: 280
Poder: 18
darkbits Va por buen camino
Solucionado el tema de fechas

un saludo para todos
aqui les dejo la solucion de Delphi con Mysql con fechas
fecha tiene que ser "date" y mysql lo reconoce como yyyy/mm/dd

el BETWEEN No falla probado con D6

Código SQL [-]
_DM.MySqlRep.SQL.Text:='SELECT fecha, hora,operador, det_producto,serial, garantia, cantidad, cadaUno, venta_bs, venta_US,utilidad 
FROM detalle_venta, venta WHERE  venta.pago="CREDITO" AND venta.id_ventas=detalle_venta.id_ventas and venta.operador="'+DBLookupComboBox1.Text+'" and venta.fecha 
BETWEEN :fechainicio and :fechaFinal order by fecha ASC';

_dm.MySqlRep.ParamByName('fechainicio').AsDatetime:=trunc(sDateEdit1.date);
_dm.MySqlRep.ParamByName('fechaFinal').AsDatetime:=trunc(sDateEdit2.date);
 _DM.MySqlRep.Open;
Responder Con Cita
  #9  
Antiguo 23-07-2010
Avatar de darkbits
darkbits darkbits is offline
Miembro
 
Registrado: may 2006
Posts: 280
Poder: 18
darkbits Va por buen camino
ayuda BETWEEN con fecha y hora

Un salduo
un saludo tengo este Between que funciona con solo fechas muy bien con Mysql mi nuevo problema es cuando fecha es de tipo "datetime"
fecha + hora >> 23/07/2010 19:00:00
no me da el reporte para mi es algo en los parametros ya probe de todo y nada, help me

Código SQL [-]
_DM.MySqlRep.SQL.Text:='SELECT fecha, hora,operador, det_producto,serial, garantia, cantidad, cadaUno, venta_bs, venta_US,utilidad 
FROM detalle_venta, venta WHERE  venta.pago="CREDITO" AND venta.id_ventas=detalle_venta.id_ventas and venta.operador="'+DBLookupComboBox1.Text+'" and venta.fecha 
BETWEEN :fechainicio and :fechaFinal order by fecha ASC';

_dm.MySqlRep.ParamByName('fechainicio').AsDatetime:=trunc(sDateEdit1.date)+strtodatetime(HoraInicio.  text);
_dm.MySqlRep.ParamByName('fechaFinal').AsDatetime:=trunc(sDateEdit2.date)+strtodatetime(HoraFinal.te  xt);
 _DM.MySqlRep.Open;
Responder Con Cita
  #10  
Antiguo 23-07-2010
Avatar de Jac fcc
Jac fcc Jac fcc is offline
Miembro
 
Registrado: ene 2010
Posts: 33
Poder: 0
Jac fcc Va por buen camino
lo que pasa es que la suma de fecha se realiza:
Cita:
trunc(sDateEdit1.date)+strtodatetime(HoraInicio.text);
estarás sumando la fecha de sDateEdit1 mas el dia y hora de la conversionstrtodatetime (..).

en lugar de particionar y concatenar solo agrega la hora a tu campo de fecha:
Código Delphi [-]
:=sDateEdit1.date+StrtoTime('00:00:01');//el primer segundo de tu fecha inicial
:=sDateEdit2.date+StrtoTime('23:59:59');//el ultimo segundo de tu fecha final

intentalo y nos cuentas como te fue.

¿no hubiera sido mejor continuar con tu anterior hilo?
no era necesario abrir uno nuevo, no crees?
__________________
Para una vida sana hay que ocupar 30 de 24hrs diarias...Ups!
Responder Con Cita
  #11  
Antiguo 24-07-2010
Avatar de darkbits
darkbits darkbits is offline
Miembro
 
Registrado: may 2006
Posts: 280
Poder: 18
darkbits Va por buen camino
Funciona muy Bien!

Funciono!

con las 2 opciones.

gracias por la solucion.


Nota: inicie un nuevo hilo porque mi anterior consulta fue respondida por todos los amigos. hasta su solucion .
Responder Con Cita
  #12  
Antiguo 24-07-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Yo diría que es el mismo tema, no?, ¿por qué abrir otro hilo? , por favor, no hagas estas cosas
Responder Con Cita
  #13  
Antiguo 24-07-2010
Avatar de darkbits
darkbits darkbits is offline
Miembro
 
Registrado: may 2006
Posts: 280
Poder: 18
darkbits Va por buen camino
Sorry

sorry amigos no volvera a pasar...
Responder Con Cita
  #14  
Antiguo 24-07-2010
Avatar de darkbits
darkbits darkbits is offline
Miembro
 
Registrado: may 2006
Posts: 280
Poder: 18
darkbits Va por buen camino
quitenme la duda
todo lo que es fecha de tipo datetime las consultas se solucionan con BETWEEN y parametros? o se puede con like o =

tengo este sql donde ventas.fecha es datetime > 24/07/2010 17:00:00

para el resultado solo quiero tomar encuenta la fecha como hay distintas horas de venta no me da ni un resultado.

Código SQL [-]
_DM.MySql.Close;
_DM.MySql.SQL.Text:='SELECT SUM(venta_Bs) as ventBs ,SUM(Venta_US) AS ventUs 
 FROM detalle_venta, venta WHERE venta.pago="CONTADO" and venta.id_ventas=
 detalle_venta.id_ventas And venta.fecha="'+FormatDateTime('yyyy"-"mm"-"dd',Date)+'"';
_DM.MySql.open;

gracias.
Responder Con Cita
  #15  
Antiguo 25-07-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Amigo darkbits, creo que te lo han explicado arriba, ¿no es eso lo que necesitas?, si no es eso, entonces, explicanos mejor, gracias
Responder Con Cita
  #16  
Antiguo 26-07-2010
Avatar de darkbits
darkbits darkbits is offline
Miembro
 
Registrado: may 2006
Posts: 280
Poder: 18
darkbits Va por buen camino
hola amigos me explico un poquito mejor

lo que pasa es que tengo dudas con fechas que son campos datetime
el between funciona perfecto lo aprendi aqui.

mi consulta era que si toda variable de tipo "datetime" se solucionan con BETWEEN y parametros? o se puede con like o comparaciones porque tengo otro sql donde solo me interesa la fecha y no la hora en esta consulta donde venta.fecha es de tipo datetime.

Código SQL [-]
_DM.MySql.Close;
_DM.MySql.SQL.Text:='SELECT SUM(venta_Bs) as ventBs ,SUM(Venta_US) AS ventUs 
 FROM detalle_venta, venta WHERE venta.pago="CONTADO" and venta.id_ventas=
 detalle_venta.id_ventas And venta.fecha="'+FormatDateTime('yyyy"-"mm"-"dd',Date)+'"';
_DM.MySql.open;
Responder Con Cita
  #17  
Antiguo 26-07-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Sigue sin quedarme demasiado claro, pero veamos... si quieres obtener todos los registros con fecha mayor a la que sea, pues:
where fecha > '01.08.2010'
No importa la hora porque cualquier hora será mayor, ten en cuenta lo dicho antes, que la fecha es realmente un número con decimales, ejemplo: 35800,36547898854
35800 es el día y la parte decimal es la hora.
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
Consulta Mysql Suma entre rango de fechas kaeltas MySQL 4 22-06-2012 21:30:44
Ayuda SQL Between con rango de fechas darkbits SQL 3 14-04-2010 22:31:30
Rango de fechas chino150 Varios 17 08-02-2008 20:17:39
Rango de fechas roberasturias Varios 2 23-05-2005 18:02:35
Rango de fechas JODELSA Varios 8 22-05-2003 20:45:43


La franja horaria es GMT +2. Ahora son las 02:28: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