FROM_UNIXTIME() タイムスタンプ値を返します。 マニュアルから: 。
今混乱しているのは、タイムゾーンがタイムスタンプで考慮されているという事実です。
グリニッジ標準時GMT+1時間帯の場合、これは
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