sql >> Databasteknik >  >> RDS >> Mysql

MySQL:hur man får skillnaden mellan två tidsstämplar på sekunder

Du kan använda TIMEDIFF() och code>TIME_TO_SEC() fungerar enligt följande:

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 också använda UNIX_TIMESTAMP() fungera som @Amber föreslog i ett annat 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)

Om du använder TIMESTAMP datatyp antar jag att UNIX_TIMESTAMP() lösningen skulle vara något snabbare, eftersom TIMESTAMP värden är redan lagrade som ett heltal som representerar antalet sekunder sedan epoken (Källa ). Citerar dokumenten :

När UNIX_TIMESTAMP() används på en TIMESTAMP kolumnen returnerar funktionen det interna tidsstämpelvärdet direkt, utan någon implicit konvertering av "sträng-till-Unix-tidsstämpel".

Tänk på att TIMEDIFF() returdatatyp för TID . TIME värden kan variera från '-838:59:59' till '838:59:59' (ungefär 34,96 dagar)



  1. Joomla SQL Injection sårbarhet

  2. Hur man tar bort en rad i SQL

  3. Oracle:laddar en stor xml-fil?

  4. SQLite skära