Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-07-2013
Avatar de salvica
salvica salvica is offline
Miembro
 
Registrado: mar 2004
Ubicación: Albacete (España) ... En un lugar de la Mancha ...
Posts: 304
Poder: 21
salvica Va por buen camino
Uso de DATE en consulta

Hola a todos.
Este hilo podría ser continuación de este otro, pero como las preguntas son distintas, abro un hilo nuevo.

Tengo una tabla de los lugares existentes en unas coordenadas de GoogleMaps y las fechas en las que se han visitado.
Código:
Tabla LUGARES
     ID = Identificador del registro
     VISITADO = fecha y hora de la visita
     LATITUD, LONGITUD = coordenadas Google del sitio
Bien, necesito listar aquellas que se han visitado un día en un intervalo determinado. por ejemplo entre las 14:30:00 de ayer y las 15:45:00 de hoy (suponemos la fecha de hoy como 22-01-2013

Esto me saca TODAS las visitas de un día en un área determinada (unas 15 más o menos)
Código SQL [-]
SELECT *
   FROM lugares
WHERE DATE(visita)='2013-01-22'
     AND (latitud   BETWEEN (38.953619-0.65) AND (38.953619+0.65) )
     AND (longitud  BETWEEN (-1.858060-0.9)  AND (-1.858060+0.9) )
Sin embargo no soy capaz de reducir el intervalo (esto NO ME FUNCIONA):
Código SQL [-]
SELECT *
   FROM lugares
WHERE ( DATE_FORMAT(visita, '%Y-%m-%d %H:%i:%s')>='2013-01-21 14:30:00' )
     AND ( DATE_FORMAT(visita, '%Y-%m-%d %H:%i:%s')<='2013-01-22 15:45:00' )
     AND (latitud   BETWEEN (38.953619-0.65) AND (38.953619+0.65) )
     AND (longitud  BETWEEN (-1.858060-0.9)  AND (-1.858060+0.9) )
¿Podeis ayudarme?
Gracias adelantadas
Salvica
Responder Con Cita
  #2  
Antiguo 01-07-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Fecha= :fecha
and hora between :horainicio and horafinal


Aunque habría que saber si la fecha y hora están en un mismo campo o en campos separados.
Responder Con Cita
  #3  
Antiguo 01-07-2013
Avatar de salvica
salvica salvica is offline
Miembro
 
Registrado: mar 2004
Ubicación: Albacete (España) ... En un lugar de la Mancha ...
Posts: 304
Poder: 21
salvica Va por buen camino
Hola Casimiro Notevi, gracias por contestar.

La fecha y hora están en el mismo campo y declarados como timestamp,el código es SQL puro y duro para una página web y lo construye un script PHP 5.4, el servidor es MySql5 (se me olvidó poner los datos de sistema, lo siento)

He probado a poner el campo visitas tal cual, pero tampoco me devuelve nada:
Código SQL [-]
SELECT *
   FROM lugares
WHERE ( visita>='2013-01-21 14:30:00' )
      AND ( visita<='2013-01-22 15:45:00' )
      AND (latitud   BETWEEN (38.953619-0.65) AND (38.953619+0.65) )
      AND (longitud  BETWEEN (-1.858060-0.9)  AND (-1.858060+0.9) )
Lo de usar variables, en php no lo he utilizado nunca, solo en delphi ¿también se puede?
Gracias
Salvica
Responder Con Cita
  #4  
Antiguo 03-07-2013
DarkDudae DarkDudae is offline
Miembro
 
Registrado: abr 2006
Posts: 94
Poder: 19
DarkDudae Va por buen camino
Cita:
Empezado por salvica Ver Mensaje
Hola Casimiro Notevi, gracias por contestar.

La fecha y hora están en el mismo campo y declarados como timestamp,el código es SQL puro y duro para una página web y lo construye un script PHP 5.4, el servidor es MySql5 (se me olvidó poner los datos de sistema, lo siento)

He probado a poner el campo visitas tal cual, pero tampoco me devuelve nada:
Código SQL [-]
SELECT *
   FROM lugares
WHERE ( visita>='2013-01-21 14:30:00' )
      AND ( visita<='2013-01-22 15:45:00' )
      AND (latitud   BETWEEN (38.953619-0.65) AND (38.953619+0.65) )
      AND (longitud  BETWEEN (-1.858060-0.9)  AND (-1.858060+0.9) )
Lo de usar variables, en php no lo he utilizado nunca, solo en delphi ¿también se puede?
Gracias
Salvica
Parece que tu consulta está correcta. En principio el DateFormat no lo necesitas para nada puesto que estás introduciendo la fecha/hora en el formato YYYY-MM-DD HH:MM:SS de MySQL.
El caso es que el comando que estás usando te debería funcionar siendo visita un campo de tipo TIMESTAMP. Prueba quitando las condiciones de latitud y longitud por si son estas las que están excluyendo otros resultados de búsqueda.

Otra cosa que supongo que no tendrá nada que ver, es que yo suelo poner en las consultas SQL los campos de fecha y hora con doble comillado en vez de simple: "2013-01-21 14:30:00"

Un saludo
Responder Con Cita
  #5  
Antiguo 06-07-2013
Avatar de salvica
salvica salvica is offline
Miembro
 
Registrado: mar 2004
Ubicación: Albacete (España) ... En un lugar de la Mancha ...
Posts: 304
Poder: 21
salvica Va por buen camino
Hola a todos y gracias por vuestra ayuda.
Al final lo he resuelto separando DATA y TIME para cada evento, por si en algún momento pido algún intervalo entre dos fechas.
Código SQL [-]
SELECT *
  FROM lugares
WHERE ( DATE(visita)>='2013-01-21' AND TIME(visita)>='14:30:00' )
     AND ( DATE(visita)<='2013-01-22' AND TIME(visita)<='15:45:00' )
     AND (latitud   BETWEEN (38.953619-0.65) AND (38.953619+0.65) )
     AND (longitud  BETWEEN (-1.858060-0.9)  AND (-1.858060+0.9) )
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 por fecha (tipo Date) delphi negrokau Varios 8 19-05-2011 18:36:57
consulta sobre el date time picker kazcote Varios 3 20-07-2006 10:32:54
duda campo DATE obtenido consulta albarchi PHP 3 22-08-2005 23:28:19
Consulta por un campo date a un dbf fredy_boots SQL 3 01-12-2003 13:18:03
Consulta por un campo date a un dbf fredy_boots SQL 3 31-10-2003 17:54:34


La franja horaria es GMT +2. Ahora son las 19:38:35.


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