FROM_UNIXTIME() devuelve un valor de marca de tiempo. Del manual: .
Lo que puede ser confuso ahora es el hecho de que las zonas horarias se consideran con marca de tiempo.
Si estás en la zona horaria GMT+1h, esto
select unix_timestamp('1970-01-01 00:00:00');
regresa
+---------------------------------------+
| unix_timestamp('1970-01-01 00:00:00') |
+---------------------------------------+
| 0 |
+---------------------------------------+
Dado que se considera la zona horaria, este
select unix_timestamp('1970-01-01 01:00:00');
todavía regresa
+---------------------------------------+
| unix_timestamp('1970-01-01 01:00:00') |
+---------------------------------------+
| 0 |
+---------------------------------------+
Pero esto...
select unix_timestamp('1970-01-01 01:00:01');
+---------------------------------------+
| unix_timestamp('1970-01-01 01:00:01') |
+---------------------------------------+
| 1 |
+---------------------------------------+
y esto
select unix_timestamp('1970-01-01 02:00:00');
+---------------------------------------+
| unix_timestamp('1970-01-01 02:00:00') |
+---------------------------------------+
| 3600 |
+---------------------------------------+
ahora devuelve valores "correctos".
ACTUALIZAR:
Solución fácil y rápida:
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