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

MYSQL DATE_ADD error de sintaxis con MINUTES

Estas en el tema de MYSQL DATE_ADD error de sintaxis con MINUTES en el foro de Bases de Datos General en Foros del Web. Hola amiguitos Tengo el siguiente problema, cuando hago la siguiente consulta: SELECT * FROM `usuarios` WHERE `usuario` = '".$usuario."' AND `password` = '".$password."' AND (intentos ...
  #1 (permalink)  
Antiguo 10/12/2010, 21:14
 
Fecha de Ingreso: febrero-2005
Mensajes: 626
Antigüedad: 19 años, 8 meses
Puntos: 10
MYSQL DATE_ADD error de sintaxis con MINUTES

Hola amiguitos

Tengo el siguiente problema, cuando hago la siguiente consulta:

SELECT * FROM `usuarios` WHERE `usuario` = '".$usuario."' AND `password` = '".$password."' AND (intentos < 3 OR (intentos >= 3 AND NOW() > DATE_ADD(ultimo_intento, INTERVAL 15 MINUTES))

intente tambien

SELECT * FROM `usuarios` WHERE `usuario` = 'a' AND `password` = 'b' AND (intentos < 3 OR (intentos > 3 AND ADD_DATE(ultimo_intento,INTERVAL 15 MINUTES) < CURDATE())

y me dice:

#1064 - 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 'MINUTES)

Cual es la correcta sintaxis?
  #2 (permalink)  
Antiguo 10/12/2010, 21:23
 
Fecha de Ingreso: febrero-2005
Mensajes: 626
Antigüedad: 19 años, 8 meses
Puntos: 10
Respuesta: MYSQL DATE_ADD error de sintaxis con MINUTES

Problema solucionado

Es MINUTE no MINUTES

va asi

SELECT * FROM `usuarios` WHERE `usuario` = 'a' AND `password` = 'b' AND (`intentos` < 3 OR (`intentos` > 3 AND NOW() > DATE_ADD(`ultimo_intento`, INTERVAL 15 MINUTE)))


Oigan pero porque?
  #3 (permalink)  
Antiguo 11/12/2010, 03:53
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: MYSQL DATE_ADD error de sintaxis con MINUTES

Cita:
Oigan pero porque?
Por la misma razón que se usa YEAR, MONTH, DAY, HOUR y SECOND, en esa función: La unidad de tiempo no se denomina MINUTOS sino MINUTO.
los DBMS entienden el código que tienen programado, no el lenguaje natural.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 11/12/2010, 15:04
 
Fecha de Ingreso: febrero-2005
Mensajes: 626
Antigüedad: 19 años, 8 meses
Puntos: 10
Respuesta: MYSQL DATE_ADD error de sintaxis con MINUTES

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Por la misma razón que se usa YEAR, MONTH, DAY, HOUR y SECOND, en esa función: La unidad de tiempo no se denomina MINUTOS sino MINUTO.
los DBMS entienden el código que tienen programado, no el lenguaje natural.
Si entiiendo eso pero es que aqui dice http://dev.mysql.com/doc/refman/4.1/...ction_date-add

que tambien es valida la expresion minute,

Aunque ahorita leyendo, creo que es _MINUTE no MINUTE, verdad?
  #5 (permalink)  
Antiguo 11/12/2010, 16:10
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: MYSQL DATE_ADD error de sintaxis con MINUTES

Primero: Usa los manuales para las versiones que estás usando. Consultaste la página de la versión 4.x, cuando actualmente esta en producción la 5.1.x...
Como mínimo, deberías usar: http://dev.mysql.com/doc/refman/5.0/...functions.html, para acceder a una página en el mismo idioma en que estamos trabajando.

Segundo: Si te fijas bien, el "_" es parte del dibujo de la tabla en la página, y no parte de la unidad (¡!).

Tercero, si te vijas con atención, la columna donde dice MINUTES hace referencia al valor esperado para expr, dentro de los parámetros, mientras que MINUTE se refiere al valor que debe tener el parámetro type:

Cita:
DATE_ADD(date,INTERVAL expr type), DATE_SUB(date,INTERVAL expr type)

Estas funciones realizan operaciones aritméticas de fechas. date es un valor DATETIME o DATE especificando la fecha de inicio. expr es una expresión que especifica el intervalo a añadir o borrar de la fecha de inicio. expr es una cadena; puede comenzar con un '-' para intervalos negativos. type es una palabra clave que indica cómo debe interpretarse la expresión.

La palabra clave INTERVAL y el especificador type no son sensibles a mayúsculas.

La siguiente tabla muestra cómo se relacionan los argumentos type y expr :
type Value Expected expr Format
MICROSECOND MICROSECONDS
SECOND SECONDS
En el contexto de la explicación y los ejemplos del manual, el caracter "_" tiene el uso de un nexo que permite indicar más de una unidad de tiempo si y sólo si expr es una cadena en lugar de un valor entero:
Código MySQL:
Ver original
  1. mysql> SELECT '1997-12-31 23:59:59' + INTERVAL 1 SECOND;
  2.         -> '1998-01-01 00:00:00'
  3. mysql> SELECT INTERVAL 1 DAY + '1997-12-31';
  4.         -> '1998-01-01'
  5. mysql> SELECT '1998-01-01' - INTERVAL 1 SECOND;
  6.         -> '1997-12-31 23:59:59'
  7. mysql> SELECT DATE_ADD('1997-12-31 23:59:59',
  8.     ->                 INTERVAL 1 SECOND);
  9.         -> '1998-01-01 00:00:00'
  10. mysql> SELECT DATE_ADD('1997-12-31 23:59:59',
  11.     ->                 INTERVAL 1 DAY);
  12.         -> '1998-01-01 23:59:59'
  13. mysql> SELECT DATE_ADD('1997-12-31 23:59:59',
  14.     ->                 INTERVAL '1:1' MINUTE_SECOND);
  15.         -> '1998-01-01 00:01:00'
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: mysql, sintaxis
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 02:00.