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

SQL-case når FROM(UNIX_TIME)

FROM_UNIXTIME() returnerer en tidsstempelværdi. Fra manualen: .

Hvad der kan være forvirrende nu, er det faktum, at tidszoner betragtes med tidsstempel.

Hvis du er i tidszonen GMT+1h, dette

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

returnerer

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

Da tidszonen tages i betragtning, er dette

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

vender stadig tilbage

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

Men det her...

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

og dette

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

returner nu "korrekte" værdier.

OPDATERING:

Nem og hurtig løsning:

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
 



  1. Hvordan viser jeg databaseforespørgselsstatistik på Wordpress-webstedet?

  2. Valg af COUNT(*) med DISTINCT

  3. XMLAGG med RTRIM-problem

  4. Indre sammenføjning med lignende klausul