Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Como usar between con un campo datetime ayuda por favor

Estas en el tema de Como usar between con un campo datetime ayuda por favor en el foro de Mysql en Foros del Web. Hola como estan. Estoy desesperado y no se que mas hacerle a esta consulta. Resulta que estoy tratando de sacar una consulta con un campo ...
  #1 (permalink)  
Antiguo 29/10/2008, 14:13
Avatar de laureano59  
Fecha de Ingreso: febrero-2005
Mensajes: 395
Antigüedad: 19 años, 2 meses
Puntos: 1
Exclamación Como usar between con un campo datetime ayuda por favor

Hola como estan.


Estoy desesperado y no se que mas hacerle a esta consulta.

Resulta que estoy tratando de sacar una consulta con un campo fecha de tipo datetime, uso BETWEEN para sacar una rango de fecha pero me sale en blanco no me da errores pero sale en blanco, le quito el WHERE y sale todos los campos y datos pero cuando le agrego el WHERE y lo de la fecha me sale sin datos:


esta es la consulta;


SELECT jos_reportefalla.id_reporte,jos_comprofiler.cb_emp resa,jos_reportefalla.fecha_reporte,jos_reportefal la.ip_pc_reporte,jos_reportefalla.sistema_operativ o,jos_reportefalla.browser,jos_reportefalla.info_f alla,jos_reportefalla.estado_reporte FROM jos_reportefalla INNER JOIN jos_users ON jos_reportefalla.nit_empresa=jos_users.id INNER JOIN jos_comprofiler ON jos_comprofiler.id = jos_users.id

WHERE jos_reportefalla.fecha_reporte BETWEEN DATE_FORMAT('01-10-2008 01:00:00', '%d %m %Y') AND DATE_FORMAT('31-12-2008 24:00:00', '%d %m %Y')

y he probado asi:

WHERE jos_reportefalla.fecha_reporte BETWEEN DATE_FORMAT('01-10-2008, '%d %m %Y') AND DATE_FORMAT('31-12-2008', '%d %m %Y')

con y sin comillas tambien he probado pero nada de nada.

Tampoco puedo cambiar el tipo de datos porque en otra consulta necesito la hora y minutos de algun registro.

Les agradezco mucho su ayuda.
__________________
http://www.weblaum.com
Laureano Melo Medina
:arriba:
  #2 (permalink)  
Antiguo 29/10/2008, 14:28
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Como usar between con un campo datetime ayuda por favor

laureano,

no entiendo por qué empleas ese orden día, mes,año, cuando para trabajar con las fechas en MySQL debes usar, año, mes, día. Tampoco creo que debas preocuparte de las horas, pues con la función DATE quitarás la parte time del datetime.
... WHERE jos_reportefalla.fecha_reporte BETWEEN DATE('2008-10-01 01:00:00') AND DATE('2008-12-31 24:00:00')

eso para que tome como referencia sólo los días, sin tener en cuenta las horas.



A ver si eso.
  #3 (permalink)  
Antiguo 29/10/2008, 15:27
Avatar de laureano59  
Fecha de Ingreso: febrero-2005
Mensajes: 395
Antigüedad: 19 años, 2 meses
Puntos: 1
Respuesta: Como usar between con un campo datetime ayuda por favor

JURENA GRACIAS

ya probé como me estas indicando pero me sale este error :

ERROR 1064: You have an error in your SQL syntax near '('2008-10-01') AND DATE('2008-12-31')' at line 3

WHERE jos_reportefalla.fecha_reporte BETWEEN DATE('01-10-2008 01:00:00') AND DATE('31-12-2008 24:00:00')


y asi tambien sale error

WHERE jos_reportefalla.fecha_reporte BETWEEN DATE('2008-10-01') AND DATE('2008-12-31')


Segun el formato DIA MES AÑO: POR ESO USÉ DATE_FORMAT Y PUSE EL ORDEN EN QUE QUERIA USAR LAS FECHAS PERO EL ORDEN NO IMPORTA PUEDO USARLO AÑO MES DIA. LO QUE QUIERO ES QUE ME ARROJE DATOS.
__________________
http://www.weblaum.com
Laureano Melo Medina
:arriba:
  #4 (permalink)  
Antiguo 30/10/2008, 00:03
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Como usar between con un campo datetime ayuda por favor

Laureano, dinos cómo tienes los datos en el campo fecha_reporte. Haz un SELECT fecha_reporte FROM jos_reportefalla. Si se trata de un campo datetime, el orden deberá ser año-mes-día hora:minuto:segundo. Si no es así, ahí es donde está el problema: esas fechas no son válidas.
Una vez comprobado que eso está bien, te aconsejaría que hicieras esta consulta

SELECT DATE_FORMAT(jos_reportefalla.fecha_reporte,'%d-%m-%Y') FROM jos_reportefalla where DATE(jos_reportefalla.fecha_reporte) BETWEEN '2008-06-01' AND '2008-12-31'. Lo que hace date es quitar de un datetime la parte de time, y deja sólo la de date. Si sólo buscas date y tienes que hacerlo en un campo datetime, aplícale la función DATE().

Esto es por hacer una prueba, y te busca todas las fecha_reporte entre las fechas indicadas (no he puesto horas, pero pueden ponerse), y te muestra el resultado en el orden día, mes, año.

Pero haz solo esto: olvídate de los demás campos por el momento. Primero veremos que funciona y luego lo aplicaremos a la consulta (he visto espacios en el nombre de algunos campos y pueden dar problemas).

Última edición por jurena; 30/10/2008 a las 02:12
  #5 (permalink)  
Antiguo 30/10/2008, 02:07
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Como usar between con un campo datetime ayuda por favor

Perdón,
me equivoqué y respondí en lugar de guardar un dato tras editar. Mira el post anterior.
  #6 (permalink)  
Antiguo 30/10/2008, 10:52
Avatar de laureano59  
Fecha de Ingreso: febrero-2005
Mensajes: 395
Antigüedad: 19 años, 2 meses
Puntos: 1
Respuesta: Como usar between con un campo datetime ayuda por favor

Jurena muchas gracias.

despues de hacer varias pruebas esta es la que funciona:

SELECT jos_reportefalla.id_reporte,jos_comprofiler.cb_emp resa,jos_reportefalla.fecha_reporte,jos_reportefal la.ip_pc_reporte,jos_reportefalla.sistema_operativ o,jos_reportefalla.browser,jos_reportefalla.info_f alla,jos_reportefalla.estado_reporte FROM jos_reportefalla INNER JOIN jos_users ON jos_reportefalla.nit_empresa=jos_users.id INNER JOIN jos_comprofiler ON jos_comprofiler.id = jos_users.id
WHERE jos_reportefalla.fecha_reporte BETWEEN '2008-10-22' AND '2008-12-31'
__________________
http://www.weblaum.com
Laureano Melo Medina
:arriba:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:07.