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

[SOLUCIONADO] Error en Between

Estas en el tema de Error en Between en el foro de Mysql en Foros del Web. Buenas noches , Estoy haciendo un sistema que devuelva true o false en caso de que haya o no mantenimiento, esta es mi consulta: @import ...
  #1 (permalink)  
Antiguo 19/02/2016, 14:50
 
Fecha de Ingreso: abril-2010
Mensajes: 267
Antigüedad: 14 años
Puntos: 1
Error en Between

Buenas noches ,

Estoy haciendo un sistema que devuelva true o false en caso de que haya o no mantenimiento, esta es mi consulta:

Código MySQL:
Ver original
  1. SELECT * FROM maintenances WHERE NOW() BETWEEN CONVERT(datetime, starting, 120) AND CONVERT(datetime, ending, 120)

En la base de datos tengo la tabla maintenances, con las columnas id, starting, ending y el motivo.

Las columnas starting y ending son en formato datetime (yyyy-mm-dd hh:ss:mm)

¿Qué falla?. Me devuelve:

Código:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'starting, 120) AND CONVERT(datetime, ending, 120)' at line 1
Lo he intentado todo, sin convert, sin between comprobando mayor y menor que con now, and,... y nada.

¡Muchas gracias! :) por cierto, sí, la conexión y todo está correcto, debería funcionar.
  #2 (permalink)  
Antiguo 19/02/2016, 14:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Error en Between

Esa sintaxis de CONVERT no es de MySQL, y por lo demás si los dos campos en cuestion son DATETIME en su tabla, el CONVERT es innecesario.
Bastaría con:
Código MySQL:
Ver original
  1. FROM maintenances
  2. WHERE NOW() BETWEEN starting AND ending;

No confundas las funciones de SQL Server con las de MySQL. Muchas funciones son propias de un DBMS y no existen en otros, o bien tienen usos y/o sintaxis diferentes.

Funciones de fecha y hora: https://dev.mysql.com/doc/refman/5.7...functions.html

CONVERT de MySQL: https://dev.mysql.com/doc/refman/5.7...nction_convert

Para el caso de fechas en cadenas de texto, lo que se usa es STR_TO_DATE(), no CONVERT.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 19/02/2016 a las 15:07
  #3 (permalink)  
Antiguo 19/02/2016, 15:01
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Error en Between

Sera porque el convert que estas usando es de sql server y no de mysql???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #4 (permalink)  
Antiguo 19/02/2016, 15:03
 
Fecha de Ingreso: abril-2010
Mensajes: 267
Antigüedad: 14 años
Puntos: 1
Respuesta: Error en Between

Muchas gracias por la respuesta :)

He estado probándo y me devuelve esto:

Código:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'starting AND ending' at line 1
:S

Muchísimas gracias por la respuesta enserio :P
  #5 (permalink)  
Antiguo 19/02/2016, 15:05
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Error en Between

Postea la sintaxis d elo ultimo usado. Aunque te parezca redundante.
No es suficiente con el mensaje de error, hay que ver lo que tienes. Buen puede ser un error de tipeo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 19/02/2016, 15:07
 
Fecha de Ingreso: abril-2010
Mensajes: 267
Antigüedad: 14 años
Puntos: 1
Respuesta: Error en Between

Te paso el código php que tengo concretamente para esto:

Código MySQL:
Ver original
  1. DELETE FROM maintenances WHERE ending < NOW()

Código MySQL:
Ver original
  1. SELECT * FROM maintenances WHERE NOW() BETWEEN starting AND ending
Cita:
Editado: Código de programación no permitido en foros de Bases de Datos.
Leer las normas del foro, por favor.
eso es exactamente lo que tengo :/
  #7 (permalink)  
Antiguo 19/02/2016, 15:14
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Error en Between

STARTING es una palabra reservada.
Nunca te conviene migrar de un DBMS a otro copiando los nombres de los campos, y menos aun usar palabras en inglés. Con estas últimas es MUY probable que se generen errores indetectables.

SI no puedes cambiar el nombre de esa columna, deberás ponerlo entre acentos agudos.

Código MySQL:
Ver original
  1. SELECT * FROM `maintenances` WHERE NOW() BETWEEN `starting` AND `ending`
De esa forma no los tomará como palabras, sino como nombres de objetos de BBDD.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 19/02/2016, 16:07
 
Fecha de Ingreso: abril-2010
Mensajes: 267
Antigüedad: 14 años
Puntos: 1
Respuesta: Error en Between

¡Muchísimas gracias! :) Marco como solucionado y espero que pueda ayudar a personas que les ha pasado lo mismo que a mi.

¡Un abrazo!

Etiquetas: select, sql, tabla
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 05:04.