FROM_UNIXTIME () trả về giá trị dấu thời gian. Từ hướng dẫn sử dụng: .
Điều có thể gây nhầm lẫn bây giờ là thực tế là các múi giờ được xem xét với dấu thời gian.
Nếu bạn đang ở trong múi giờ GMT + 1h, điều này
select unix_timestamp('1970-01-01 00:00:00');
lợi nhuận
+---------------------------------------+
| unix_timestamp('1970-01-01 00:00:00') |
+---------------------------------------+
| 0 |
+---------------------------------------+
Vì múi giờ được xem xét, điều này
select unix_timestamp('1970-01-01 01:00:00');
vẫn trả lại
+---------------------------------------+
| unix_timestamp('1970-01-01 01:00:00') |
+---------------------------------------+
| 0 |
+---------------------------------------+
Nhưng điều này ...
select unix_timestamp('1970-01-01 01:00:01');
+---------------------------------------+
| unix_timestamp('1970-01-01 01:00:01') |
+---------------------------------------+
| 1 |
+---------------------------------------+
và điều này
select unix_timestamp('1970-01-01 02:00:00');
+---------------------------------------+
| unix_timestamp('1970-01-01 02:00:00') |
+---------------------------------------+
| 3600 |
+---------------------------------------+
bây giờ trả về giá trị "đúng".
CẬP NHẬT:
Giải pháp dễ dàng và nhanh chóng:
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