FROM_UNIXTIME() restituisce un valore di timestamp. Dal manuale: .
Ciò che può confondere ora è il fatto che i fusi orari sono considerati con timestamp.
Se sei nel fuso orario GMT+1h, questo
select unix_timestamp('1970-01-01 00:00:00');
resi
+---------------------------------------+
| unix_timestamp('1970-01-01 00:00:00') |
+---------------------------------------+
| 0 |
+---------------------------------------+
Poiché viene considerato il fuso orario, questo
select unix_timestamp('1970-01-01 01:00:00');
ritorna ancora
+---------------------------------------+
| unix_timestamp('1970-01-01 01:00:00') |
+---------------------------------------+
| 0 |
+---------------------------------------+
Ma questo...
select unix_timestamp('1970-01-01 01:00:01');
+---------------------------------------+
| unix_timestamp('1970-01-01 01:00:01') |
+---------------------------------------+
| 1 |
+---------------------------------------+
e questo
select unix_timestamp('1970-01-01 02:00:00');
+---------------------------------------+
| unix_timestamp('1970-01-01 02:00:00') |
+---------------------------------------+
| 3600 |
+---------------------------------------+
ora restituisci i valori "corretti".
AGGIORNAMENTO:
Soluzione facile e veloce:
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