2017-09-24 4 views
0

Je souhaite mettre à jour une colonne avec un décalage horaire entre l'heure actuelle et un enregistrement dans la même table.Mise à jour d'une colonne avec décalage horaire entre l'heure actuelle et un enregistrement dans la même table

En fait, dans cette colonne de table To devrait être NOW() et Diffs devrait être la différence entre From et To:

| ID |  Froms  | To |  Diffs | 
+----+------------------+----------+------------+ 
| 1 | 15:15:59.00000 | NULL |  NULL | 
+----+------------------+----------+------------+ 

Quand j'ai essayé cette requête, je suis un tas d'erreurs:

UPDATE dailyHours 
SET Diffs = (SELECT TIMEDIFF(TIME(NOW()), (SELECT Froms FROM dailyHours WHERE To is NULL))) 
WHERE To IS NULL 
+0

Je vous conseille d'éviter les mots réservés comme 'TO', qui peut être remplacé par d'autres mots anglais comme' UNTIL' – sagi

Répondre

1

Pourquoi utilisez-vous une sous-requête?

Si tel est la logique que vous voulez, puis:

update dailyHours 
    set Diffs = timediff(time(now()), Froms) 
    where `to` is null; 
0

Assigner NOW() à une variable puis mettre à jour la time avec la variable:

update_time=now() 

mise à jour maintenant comme ceci:

UPDATE dailyHours SET Diffs = timed(update_time,Forms) WHERE `To` is NULL; 

J'espère vous aider.