sql >> Databáze >  >> RDS >> Mysql

MySQL:jak získat rozdíl mezi dvěma časovými razítky v sekundách

Můžete použít TIMEDIFF() a TIME_TO_SEC() funguje následovně:

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)

Můžete také použít UNIX_TIMESTAMP() fungovat jako @Amber navrhl v jiné odpovědi:

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)

Pokud používáte TIMESTAMP datový typ, myslím, že UNIX_TIMESTAMP() řešení by bylo o něco rychlejší, protože TIMESTAMP hodnoty jsou již uloženy jako celé číslo představující počet sekund od epochy (Zdroj ). Citace dokumenty :

Když UNIX_TIMESTAMP() se používá na TIMESTAMP funkce vrací hodnotu interního časového razítka přímo, bez implicitního převodu „string-to-Unix-timestamp“.

Mějte na paměti, že TIMEDIFF() návratový datový typ TIME . TIME hodnoty se mohou pohybovat od „-838:59:59“ do „838:59:59“ (přibližně 34,96 dne)



  1. Migrace z MSSQL na PostgreSQL - Co byste měli vědět

  2. Jak najít výchozí jazyk uživatele na serveru SQL (T-SQL)

  3. Vyberte řádky, které nejsou přítomny v jiné tabulce

  4. Přidejte primární klíč s automatickým přírůstkem do existující tabulky v oracle