Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Liczenie godzin przy użyciu MySQL

Pomyślałem, że opublikuję odpowiedź w perspektywie podsumowania problemów związanych z wartością czasu, z którymi zmagali się do tej pory twórcy. Nie chodzi tylko o formatowanie.

Być może zauważyłeś lub nie zauważyłeś, że istnieje możliwość, że suma Twojego całkowitego czasu może zostać błędnie obliczona przez silnik. Kolejny silnik mysql może zwrócić null, chociaż masz wartości.

Podczas dodawania/agregowania wartości czasu są one konwertowane jako liczba, a wyniki będą w formacie liczbowym. Jeśli spróbujesz zsumować wartości czasu, jak poniżej:

np. 01:38:50, 03:40:25 --> idealnie powinno dać 05:19:15

  • Jeśli wykonasz Sum (dwa powyższe) --> otrzymasz liczbę
  • Jeśli użyjesz CAST(Sum(dwa powyższe) AS TIME) --> otrzymasz wartość null
  • W moim fragmencie kodu pokazano dwie inne możliwości.

Przykładowy kod referencyjny . Pokaże Ci różne wyniki, które właśnie omówiliśmy. Na razie wygląda na to, że formatowanie trójstronne może pomóc.

time_format(sec_to_time(sum(time_to_sec(logged_duration))),'%h:%i:%s') total_log_duration

Błąd zgłoszony do MySQL nie został jeszcze naprawiony.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie zwraca za mało wierszy

  2. Jak wyszukiwać i zastępować wszystkie wystąpienia ciągu w bazie danych?

  3. Laravel elokwentny kreator zapytań - Suma z grupą na relacji

  4. Jak wypełnić brakujące daty w MySQL?

  5. Dodaj backticki w tworzeniu tabeli do mysql z plikiem csv -PHP