casos en mysql no funcionan

UPDATE a_timeblock SET timeblock_due_date=DATE(timeblock_next_update), 
CASE timeblock_recurrence_unit
 WHEN day THEN
       DATE_ADD(NOW(),INTERVAL timeblock_recurrence_time  day ) 
 WHEN month THEN
       DATE_ADD(NOW(),INTERVAL timeblock_recurrence_time  month) 
  END

 WHERE timeblock_recurrence=1 AND timeblock_complete=0 AND timeblock_next_update=    
 FROM_UNIXTIME(1337662800)

La consulta anterior es incorrecta. quiero hacer algo como arriba. como lo hago si es posible.

#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 
'CASE timeblock_recurrence_unit WHEN 'day' THEN DATE_ADD(NOW(),IN' at line 2

preguntado el 22 de mayo de 12 a las 21:05

¿Qué es exactamente lo que quiere hacer? -

Y qué está mal exactamente, cuál es el mensaje de error, etc. No tenemos una base de datos poblada con sus tablas y configuraciones, ayúdenos a enfocarnos en el problema, por favor. -

timeblock_recurrence_unit contiene día mes algún tiempo años. solo quiero usar date_add() para calcular la próxima fecha de actualización. -

3 Respuestas

No tiene una columna de destino para su segundo valor.

UPDATE a_timeblock
SET timeblock_due_date = DATE(timeblock_next_update), 
    column_name?       = CASE ... END
WHERE ...

contestado el 22 de mayo de 12 a las 21:05

timeblock_next_update = DATE_ADD(AHORA(),INTERVALO timeblock_recurrence_time día) - user1410812

@user1410812: Err... ¿es una pregunta o una corrección a mi respuesta o qué? No me queda claro lo que estás tratando de decir/preguntar. - marca byers

Creo que necesita usar comillas alrededor de sus valores en el caso y simplemente CONFIGURAR timeblock_due_date:

...
SET timeblock_due_date =
CASE timeblock_recurrence_unit
  WHEN 'day' THEN
       DATE_ADD(NOW(),INTERVAL timeblock_recurrence_time  day ) 
  WHEN 'month' THEN
       DATE_ADD(NOW(),INTERVAL timeblock_recurrence_time  month) 
END
...

Esto asume timeblock_recurrence_unit es un VARCHAR tipo (que tendría que ser)

contestado el 22 de mayo de 12 a las 21:05

¿Algo como esto tal vez?

UPDATE a_timeblock SET timeblock_due_date=
CASE timeblock_recurrence_unit
 WHEN 'day' THEN
       DATE_ADD(NOW(),INTERVAL timeblock_recurrence_time  day ) 
 WHEN 'month' THEN
       DATE_ADD(NOW(),INTERVAL timeblock_recurrence_time  month) 
  END

 WHERE timeblock_recurrence=1 AND timeblock_complete=0 AND timeblock_next_update=    
 FROM_UNIXTIME(1337662800)

contestado el 22 de mayo de 12 a las 21:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.