sql >> Database >  >> RDS >> Mysql

MySQL:hoe u het verschil tussen twee tijdstempels in seconden kunt krijgen

Je zou de TIMEDIFF() en de TIME_TO_SEC() werkt als volgt:

SELECT TIME_TO_SEC(TIMEDIFF('2010-08-20 12:01:00', '2010-08-20 12:00:00')) diff;
+------+
| diff |
+------+
|   60 |
+------+
1 row in set (0.00 sec)

U kunt ook de gebruiken UNIX_TIMESTAMP() functioneren als @Amber voorgesteld in een ander antwoord:

SELECT UNIX_TIMESTAMP('2010-08-20 12:01:00') - 
       UNIX_TIMESTAMP('2010-08-20 12:00:00') diff;
+------+
| diff |
+------+
|   60 |
+------+
1 row in set (0.00 sec)

Als u de TIMESTAMP . gebruikt gegevenstype, vermoed ik dat de UNIX_TIMESTAMP() oplossing zou iets sneller zijn, aangezien TIMESTAMP waarden zijn al opgeslagen als een geheel getal dat het aantal seconden vertegenwoordigt sinds het tijdperk (Bron ). Citaat van de docs :

Wanneer UNIX_TIMESTAMP() wordt gebruikt op een TIMESTAMP kolom, retourneert de functie de interne tijdstempelwaarde rechtstreeks, zonder impliciete conversie van 'tekenreeks naar Unix-tijdstempel'.

Houd er rekening mee dat TIMEDIFF() retourgegevenstype van TIME . TIME waarden kunnen variëren van '-838:59:59' tot '838:59:59' (ongeveer 34,96 dagen)



  1. Uw ultieme gids voor SQL-joins:OUTER JOIN - Deel 2

  2. Uw PostgreSQL-back-ups valideren op Docker

  3. Een gegroepeerd rapport maken met de rapportwizard in Access 2016

  4. Rijdoelen, deel 2:Semi-joins