Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-06-2007
Avatar de david_uh
david_uh david_uh is offline
Miembro
 
Registrado: may 2007
Ubicación: Arequipa, Perú
Posts: 227
Poder: 17
david_uh Va por buen camino
Question between y datetime !!!!!!!!

Buen día caballeros:

Estoy viendo la sentencia Between trabajando con campos DateTime
tengo un conjunto de datos:...
Cita:
1| '2007-06-29 14:31:16'
1| '2007-06-29 14:31:16'
1| '2007-06-29 14:31:16'
1| '2007-06-29 14:31:16'
1| '2007-06-30 14:31:16'
2| '2007-06-30 15:08:58'
2| '2007-06-30 15:08:58'
2| '2007-06-30 15:08:58'
pretendo seleccionar entre las fechas '2007-06-29' y '2007-06-30'
escribo esta consulta:
Código SQL [-]
Select tblpagos.id As IdPago, tblpedidos.Total, tblpedidos.NroGuia,
  tblpedidos.IdVendedor, tblpedidos.Id As IdPedido, tblpagos.SaldoCom,
  tblpedidos.IdSisPago, tblpedidos.FechaEnt, tblpagos.FechaPago, tblpagos.Monto,
  tblpedidos.saldo
From tblpedidos Inner Join
  tblpagos On tblpedidos.Id = tblpagos.IdPedido
Where tblpedidos.IdVendedor = 2 And tblpagos.FechaPago Between
  '2007-06-29' And '2007-06-30'
bien esto me arroja lo siguiente:
Cita:
1 | 2007-06-29 15:08:58
2 | 2007-06-29 14:31:16
3 | 2007-06-29 14:31:16
4 | 2007-06-29 14:31:16
pero no incluye los del 2007-06-30 lo que hice fué aumentar el limite superior en un día. osea:
Código SQL [-]
Select tblpagos.id As IdPago, tblpedidos.Total, tblpedidos.NroGuia,
  tblpedidos.IdVendedor, tblpedidos.Id As IdPedido, tblpagos.SaldoCom,
  tblpedidos.IdSisPago, tblpedidos.FechaEnt, tblpagos.FechaPago, tblpagos.Monto,
  tblpedidos.saldo
From tblpedidos Inner Join
  tblpagos On tblpedidos.Id = tblpagos.IdPedido
Where tblpedidos.IdVendedor = 2 And tblpagos.FechaPago Between
  '2007-06-29' And '2007-06-31'

entonces ahora si arroja esto:
Cita:
1| '2007-06-29 14:31:16'
1| '2007-06-29 14:31:16'
1| '2007-06-29 14:31:16'
1| '2007-06-29 14:31:16'
1| '2007-06-30 14:31:16'
2| '2007-06-30 15:08:58'
2| '2007-06-30 15:08:58'
2| '2007-06-30 15:08:58'
es decir el límite superior debe ser mayor de un día para incluir el día de rango superior ????

ahora he probado también asi:

Código SQL [-]
Select tblpagos.id As IdPago, tblpedidos.Total, tblpedidos.NroGuia,
  tblpedidos.IdVendedor, tblpedidos.Id As IdPedido, tblpagos.SaldoCom,
  tblpedidos.IdSisPago, tblpedidos.FechaEnt, tblpagos.FechaPago, tblpagos.Monto,
  tblpedidos.saldo
From tblpedidos Inner Join
  tblpagos On tblpedidos.Id = tblpagos.IdPedido
Where tblpedidos.IdVendedor = 2 And tblpagos.FechaPago Between
  '2007-06-29 14:31:16' And '2007-06-30 15:08:58'

y me arroja todo bien, los 8 registros. osea si es datetime tengo que especificar los limites con hora:mm:ss ???? al parecer si.
Y si no deseo trabajar con hh:mm:ss debo aumentar ellimite superior en un Día??????

gracias por sus aportes
Responder Con Cita
  #2  
Antiguo 29-06-2007
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Si quieres trabajar con márgenes de fechas, y los registros que tienes en tu base de datos, además de la fecha contienen también una hora, pues tendrás que tener en cuenta no sólo la fecha sino además la hora en tu consulta.

Para ello si compones tu consulta sólo con fecha, deberás además para el margen inferior añadir la hora '00:00:00', y para el margen superior '23:59:59'.

Saludos,
__________________
Piensa siempre en positivo !
Responder Con Cita
  #3  
Antiguo 30-06-2007
OscarBravo OscarBravo is offline
Miembro
 
Registrado: feb 2007
Posts: 23
Poder: 0
OscarBravo Va por buen camino
Posible solucion between y datetime

Se me ocurre que puedes convertir el campo a caracter y despues obtienes los 10 primeros caracteres del campo DateTime, los cuales corresponde a la fecha Y CON ESE DATO PUEDES GENERAR LA CONSULTA, presindiendo de la hora asi:


(Copy(DateToStr(CampoDeLaTabla.Value),1,10))

Ojalá te pueda servir
Responder Con Cita
  #4  
Antiguo 30-06-2007
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
o mejor aun utiliza algunas de las funciones del motor para filtrar solo por fecha sin tomar en cuenta los minutos...

Código SQL [-]
Select tblpagos.id As IdPago, tblpedidos.Total, tblpedidos.NroGuia,
  tblpedidos.IdVendedor, tblpedidos.Id As IdPedido, tblpagos.SaldoCom,
  tblpedidos.IdSisPago, tblpedidos.FechaEnt, tblpagos.FechaPago, tblpagos.Monto,
  tblpedidos.saldo
From tblpedidos Inner Join
  tblpagos On tblpedidos.Id = tblpagos.IdPedido
Where tblpedidos.IdVendedor = 2 And date(tblpagos.FechaPago) Between
  '2007-06-29' And '2007-06-30'
No se que motor uses pero todos tienen una funcion que arroja solo la fecha de un datetime.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #5  
Antiguo 30-06-2007
Avatar de david_uh
david_uh david_uh is offline
Miembro
 
Registrado: may 2007
Ubicación: Arequipa, Perú
Posts: 227
Poder: 17
david_uh Va por buen camino
si bien estoy usando mysql 5, la funcion Date esta disponible y asi trabaja bien gracias por el dato..
Responder Con Cita
  #6  
Antiguo 30-06-2007
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
mmm... me siento frustrado...hace unos meses me pasó lo mismo y opté por no utilizar datetime sino solo date y guardar la hora en otro lado...nunca se me ocurrió esta solución. Ahora me lo preguntas tu y mira, se me ocurrió a la primera...
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #7  
Antiguo 30-06-2007
Avatar de david_uh
david_uh david_uh is offline
Miembro
 
Registrado: may 2007
Ubicación: Arequipa, Perú
Posts: 227
Poder: 17
david_uh Va por buen camino
Si, suele pasar hasta en las mejores familias ..
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
DateTime con vacios CamiloU OOP 4 12-01-2006 12:37:34
Ayuda con DateTime... DM2005 Varios 3 24-05-2005 01:17:34
agrupar por dia con un datetime.. User_baja1 Impresión 1 17-05-2005 12:36:21
DateTime scooterjgm Conexión con bases de datos 3 15-09-2004 15:58:00


La franja horaria es GMT +2. Ahora son las 19:51:06.


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