FROM_UNIXTIME() returnerer en tidsstempelværdi. Fra manualen: .
Hvad der kan være forvirrende nu, er det faktum, at tidszoner betragtes med tidsstempel.
Hvis du er i tidszonen GMT+1h, dette
select unix_timestamp('1970-01-01 00:00:00');
returnerer
+---------------------------------------+
| unix_timestamp('1970-01-01 00:00:00') |
+---------------------------------------+
| 0 |
+---------------------------------------+
Da tidszonen tages i betragtning, er dette
select unix_timestamp('1970-01-01 01:00:00');
vender stadig tilbage
+---------------------------------------+
| unix_timestamp('1970-01-01 01:00:00') |
+---------------------------------------+
| 0 |
+---------------------------------------+
Men det her...
select unix_timestamp('1970-01-01 01:00:01');
+---------------------------------------+
| unix_timestamp('1970-01-01 01:00:01') |
+---------------------------------------+
| 1 |
+---------------------------------------+
og dette
select unix_timestamp('1970-01-01 02:00:00');
+---------------------------------------+
| unix_timestamp('1970-01-01 02:00:00') |
+---------------------------------------+
| 3600 |
+---------------------------------------+
returner nu "korrekte" værdier.
OPDATERING:
Nem og hurtig løsning:
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