Certaines de mes instructions SQL ressemblent à ceci :
IF(timediff(a.wo_finish_time,
IF(a.wo_failure_time <> '0000-00-00 00:00:00',
a.wo_failure_time,
a.wo_creation_time)) < 0,
0,
timediff(a.wo_finish_time,
IF(a.wo_failure_time <> '0000-00-00 00:00:00',
a.wo_failure_time,
a.wo_creation_time)))
Comme vous pouvez le constater, il est verbeux car une partie apparaît deux fois. J'ai donc essayé d'utiliser une variable définie par l'utilisateur comme ceci :
if(@down_time := timediff(a.wo_finish_time,
IF(a.wo_failure_time <> '0000-00-00 00:00:00',
a.wo_failure_time,
a.wo_creation_time)) < 0,
0,
@down_time)
Peut-être qu'en raison de la différence de portée des variables, cela ne fonctionne pas. Je sais que je peux mettre cette déclaration de variable @down_time dans SELECT
mais cela l'ajouterait également à la colonne de sortie. Je suppose qu'il doit y avoir une meilleure façon de procéder, c'est pourquoi je pose cette question, en espérant trouver une meilleure approche.