FROM_UNIXTIME() връща стойност на времеви печат. От ръководството: .
Това, което може да бъде объркващо сега, е фактът, че часовите зони се разглеждат с времеви печат.
Ако сте в часовата зона GMT+1h, това
select unix_timestamp('1970-01-01 00:00:00');
връща
+---------------------------------------+
| unix_timestamp('1970-01-01 00:00:00') |
+---------------------------------------+
| 0 |
+---------------------------------------+
Тъй като се взема предвид часовата зона, това
select unix_timestamp('1970-01-01 01:00:00');
все още се връща
+---------------------------------------+
| unix_timestamp('1970-01-01 01:00:00') |
+---------------------------------------+
| 0 |
+---------------------------------------+
Но това...
select unix_timestamp('1970-01-01 01:00:01');
+---------------------------------------+
| unix_timestamp('1970-01-01 01:00:01') |
+---------------------------------------+
| 1 |
+---------------------------------------+
и това
select unix_timestamp('1970-01-01 02:00:00');
+---------------------------------------+
| unix_timestamp('1970-01-01 02:00:00') |
+---------------------------------------+
| 3600 |
+---------------------------------------+
сега върнете "правилните" стойности.
АКТУАЛИЗАЦИЯ:
Лесно и бързо решение:
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