FROM_UNIXTIME() vrátí hodnotu časového razítka. Z příručky: .
Co může být nyní matoucí, je skutečnost, že časová pásma jsou považována za časové razítko.
Pokud se nacházíte v časovém pásmu GMT+1h, toto
select unix_timestamp('1970-01-01 00:00:00');
vrací
+---------------------------------------+
| unix_timestamp('1970-01-01 00:00:00') |
+---------------------------------------+
| 0 |
+---------------------------------------+
Vzhledem k tomu, že se bere v úvahu časové pásmo, toto
select unix_timestamp('1970-01-01 01:00:00');
stále se vrací
+---------------------------------------+
| unix_timestamp('1970-01-01 01:00:00') |
+---------------------------------------+
| 0 |
+---------------------------------------+
Ale tohle...
select unix_timestamp('1970-01-01 01:00:01');
+---------------------------------------+
| unix_timestamp('1970-01-01 01:00:01') |
+---------------------------------------+
| 1 |
+---------------------------------------+
a toto
select unix_timestamp('1970-01-01 02:00:00');
+---------------------------------------+
| unix_timestamp('1970-01-01 02:00:00') |
+---------------------------------------+
| 3600 |
+---------------------------------------+
nyní vrátí "správné" hodnoty.
AKTUALIZACE:
Snadné a rychlé řešení:
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