Mysql
 sql >> Database >  >> RDS >> Mysql

Caso SQL quando DA(UNIX_TIME)

FROM_UNIXTIME() restituisce un valore di timestamp. Dal manuale: .

Ciò che può confondere ora è il fatto che i fusi orari sono considerati con timestamp.

Se sei nel fuso orario GMT+1h, questo

select unix_timestamp('1970-01-01 00:00:00');

resi

+---------------------------------------+
| unix_timestamp('1970-01-01 00:00:00') |
+---------------------------------------+
|                                     0 |
+---------------------------------------+

Poiché viene considerato il fuso orario, questo

select unix_timestamp('1970-01-01 01:00:00');

ritorna ancora

+---------------------------------------+
| unix_timestamp('1970-01-01 01:00:00') |
+---------------------------------------+
|                                     0 |
+---------------------------------------+

Ma questo...

select unix_timestamp('1970-01-01 01:00:01');
+---------------------------------------+
| unix_timestamp('1970-01-01 01:00:01') |
+---------------------------------------+
|                                     1 |
+---------------------------------------+

e questo

select unix_timestamp('1970-01-01 02:00:00');
+---------------------------------------+
| unix_timestamp('1970-01-01 02:00:00') |
+---------------------------------------+
|                                  3600 |
+---------------------------------------+

ora restituisci i valori "corretti".

AGGIORNAMENTO:

Soluzione facile e veloce:

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