sql >> Database >  >> RDS >> Mysql

SQL-case wanneer FROM(UNIX_TIME)

FROM_UNIXTIME() geeft een tijdstempelwaarde terug. Uit de handleiding: .

Wat nu verwarrend kan zijn, is het feit dat er rekening wordt gehouden met tijdzones met tijdstempel.

Als u zich in de tijdzone GMT+1h bevindt, is dit

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

retourneert

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

Aangezien er rekening wordt gehouden met de tijdzone, is dit

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

komt nog steeds terug

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

Maar dit...

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

en dit

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

retourneer nu "juiste" waarden.

BIJWERKEN:

Gemakkelijke en snelle oplossing:

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. Kan de standaarddatabase van de gebruiker niet openen. Inloggen mislukt. na installatie van SQL Server Management Studio Express

  2. MySQL-query uitfilteren in PHP

  3. MySQL-winkelwagenstructuur

  4. Moeten PHP-ontwikkelaars de opgeslagen procedures van MySQL gebruiken?