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

MySQL:hvordan man får forskellen mellem to tidsstempler på sekunder

Du kan bruge TIMEDIFF() og TIME_TO_SEC() fungerer som følger:

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)

Du kan også bruge UNIX_TIMESTAMP() fungere som @Amber foreslået i et andet svar:

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)

Hvis du bruger TIMESTAMP datatype, gætter jeg på, at UNIX_TIMESTAMP() løsningen ville være lidt hurtigere, da TIMESTAMP værdier er allerede gemt som et heltal, der repræsenterer antallet af sekunder siden epoken (Kilde ). Citerer dokumenterne a> :

Når UNIX_TIMESTAMP() bruges på en TIMESTAMP kolonne, returnerer funktionen den interne tidsstempelværdi direkte uden implicit konvertering af "streng-til-Unix-tidsstempel".

Husk at TIMEDIFF() returdatatypen TID . TID værdier kan variere fra '-838:59:59' til '838:59:59' (ca. 34,96 dage)



  1. Bestem rang baseret på flere kolonner i MySQL

  2. java.lang.NoSuchFieldError:NONE i dvale med Spring 3, maven, JPA, c3p0

  3. Sådan returneres id'er på indsatser med Ibatis (med RETURNING nøgleord)

  4. Oracles standard DATO-format