MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

GODZINA() vs WYCIĄG(GODZINA…) w MariaDB:Jaka jest różnica?

MariaDB ma funkcję HOUR() funkcja, która wyodrębnia część godzinową z wartości czasu. MariaDB ma również funkcję EXTRACT() funkcja, która może również wyodrębnić część godzinową z wartości czasu.

Jednak te funkcje nie zawsze zwracają ten sam wynik.

Czytaj dalej, aby zobaczyć różnicę między HOUR() i EXTRACT(HOUR FROM ...) w MariaDB.

Różnica

HOUR() i EXTRACT(HOUR FROM ...) oba zwracają tę samą wartość, gdy wyrażenie czasu jest wyrażeniem czasu dnia. To znaczy, jeśli część godzinowa jest pomiędzy 0 i 23 , wtedy zwracają ten sam wynik.

Różnica pojawia się, gdy część godzinowa jest większa niż 23 .

TIME wartości mogą należeć do zakresu '-838:59:59.999999' do '838:59:59.999999' , ale wartość czasu dnia może zawierać się tylko w przedziale 0 i 23 .

Jeśli wyrażenie czasu jest poza 0 i 23 zasięg:

  • HOUR() zwraca rzeczywistą część godziny z wyrażenia (o ile mieści się w zakresie '-838:59:59.999999' do '838:59:59.999999' – poza tym zakresem zwraca 838 )
  • EXTRACT(HOUR FROM ...) zwraca wartość pomiędzy 0 i 23 . Jeśli godzina jest poza tym zakresem, EXTRACT() będzie iterować przez 0 i 23 tyle razy, ile potrzeba, aby zwrócić wartość między 0 i 23 .

Przykład

Oto przykład do zademonstrowania.

SELECT 
    HOUR('24:00:00'),
    EXTRACT(HOUR FROM '24:00:00');

Wynik:

+------------------+-------------------------------+
| HOUR('24:00:00') | EXTRACT(HOUR FROM '24:00:00') |
+------------------+-------------------------------+
|               24 |                             0 |
+------------------+-------------------------------+

HOUR() funkcja zwraca rzeczywistą podaną godzinę, natomiast EXTRACT() zwraca 0 . Dzieje się tak, ponieważ 24 jest wyższy niż 23 , która jest najwyższą wartością EXTRACT() wróci na część godzinową. W tym przypadku EXTRACT() rozpoczyna odliczanie od nowa, zaczynając od 0 .

Będzie to robił tyle razy, ile będzie to konieczne, aby wynik był zawsze między 0 i 23 .

Oto kolejny przykład ze znacznie większą częścią godzinową:

SELECT 
    HOUR('742:00:00'),
    EXTRACT(HOUR FROM '742:00:00');

Wynik:

+-------------------+--------------------------------+
| HOUR('742:00:00') | EXTRACT(HOUR FROM '742:00:00') |
+-------------------+--------------------------------+
|               742 |                             22 |
+-------------------+--------------------------------+


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Korzystanie z wtyczki dziennika audytu Percona do zabezpieczania baz danych

  2. Porównanie rozwiązania Oracle RAC HA z Galera Cluster for MySQL lub MariaDB

  3. Funkcje JSON MariaDB

  4. Jak wykonać kopię zapasową bazy danych Moodle MariaDB?

  5. Replikacja MySQL z ProxySQL na serwerach WHM/cPanel:część pierwsza