FROM_UNIXTIME() renvoie une valeur d'horodatage. À partir du manuel : .
Ce qui peut être déroutant maintenant, c'est le fait que les fuseaux horaires sont pris en compte avec l'horodatage.
Si vous êtes dans le fuseau horaire GMT+1h, cela
select unix_timestamp('1970-01-01 00:00:00');
renvoie
+---------------------------------------+
| unix_timestamp('1970-01-01 00:00:00') |
+---------------------------------------+
| 0 |
+---------------------------------------+
Étant donné que le fuseau horaire est pris en compte, cela
select unix_timestamp('1970-01-01 01:00:00');
revient toujours
+---------------------------------------+
| unix_timestamp('1970-01-01 01:00:00') |
+---------------------------------------+
| 0 |
+---------------------------------------+
Mais ça...
select unix_timestamp('1970-01-01 01:00:01');
+---------------------------------------+
| unix_timestamp('1970-01-01 01:00:01') |
+---------------------------------------+
| 1 |
+---------------------------------------+
et ça
select unix_timestamp('1970-01-01 02:00:00');
+---------------------------------------+
| unix_timestamp('1970-01-01 02:00:00') |
+---------------------------------------+
| 3600 |
+---------------------------------------+
renvoie maintenant les valeurs "correctes".
MISE À JOUR :
Solution simple et rapide :
SELECT
CASE
WHEN t.escalation_time = 0 THEN 0
WHEN FROM_UNIXTIME( t.escalation_time ) = '1970-01-01 00:00:00' THEN 0
ELSE FROM_UNIXTIME( t.escalation_time )
END
FROM ticket t WHERE t.id =1