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

4 funkcje do pobrania godziny z wartości czasu w MariaDB

Poniżej znajdują się 4 funkcje, które umożliwiają zwrócenie godziny z wartości czasu w MariaDB.

HOUR() Funkcja

HOUR() funkcja zwraca godzinę za podany TIME lub DATETIME wyrażenie. Przyjmuje jeden argument, czyli czas, z którego chcesz wydobyć godzinę.

Przykład:

SELECT HOUR('03:45:30');

Wynik:

+------------------+
| HOUR('03:45:30') |
+------------------+
|                3 |
+------------------+

W przypadku wartości czasu dnia zwraca godzinę jako liczbę z zakresu 0 do 23 . Jednak zakres TIME wartości mogą być znacznie większe, dlatego zwracana wartość może być znacznie wyższa niż 23 . W szczególności TIME wartości mogą należeć do zakresu '-838:59:59.999999' do '838:59:59.999999' .

Oto przykład z większą częścią godzinową:

SELECT HOUR('838:45:30');

Wynik:

+-------------------+
| HOUR('838:45:30') |
+-------------------+
|               838 |
+-------------------+

Jeśli czas jest poza akceptowanym zakresem dla TIME wartości, zwracana wartość to 838 z ostrzeżeniem.

TIME wartości mogą być również ujemne. W takich przypadkach HOUR() zwraca wartość dodatnią.

EXTRACT() Funkcja

EXTRACT() funkcja pozwala na wyodrębnienie określonej jednostki z wartości daty/czasu. Dlatego możesz go użyć do wyodrębnienia godziny (jak również innych jednostek) z wartości czasu.

Przykład:

SELECT EXTRACT(HOUR FROM '10:47:01');

Wynik:

+-------------------------------+
| EXTRACT(HOUR FROM '10:47:01') |
+-------------------------------+
|                            10 |
+-------------------------------+

TIME_FORMAT() Funkcja

TIME_FORMAT() funkcja pozwala sformatować wartość czasu na podstawie ciągu formatującego. Ciąg formatu określa sposób formatowania czasu.

Możesz więc użyć tej funkcji do zwrócenia godziny (oraz minut i sekund) z czasu. Istnieją różne opcje zwracania godziny.

Oto przykład, który zwraca godzinę w różnych formach:

SELECT 
    TIME_FORMAT('18:45:30', '%H') AS '%H',
    TIME_FORMAT('18:45:30', '%h') AS '%h',
    TIME_FORMAT('18:45:30', '%I') AS '%I',
    TIME_FORMAT('18:45:30', '%k') AS '%k',
    TIME_FORMAT('18:45:30', '%l') AS '%l';

Wynik:

+------+------+------+------+------+
| %H   | %h   | %I   | %k   | %l   |
+------+------+------+------+------+
| 18   | 06   | 06   | 18   | 6    |
+------+------+------+------+------+

Oto opis każdego z tych specyfikatorów formatu:

Specyfikator formatu Opis
%H Godzina z 2 cyframi od 00 do 23.
%h Godzina z 2 cyframi między 01-12.
%I Godzina z 2 cyframi między 01-12.
%k Godzina z 1 cyfrą od 0 do 23.
%l Godzina z 1 cyfrą między 1-12.

TIME_FORMAT() funkcja akceptuje podzbiór ciągów formatujących, które mogą być używane z DATE_FORMAT() funkcjonować. Zobacz ciągi formatujące MariaDB, aby uzyskać pełną listę ciągów formatujących/specyfikatorów, których można używać z DATE_FORMAT() . TIME_FORMAT() funkcja akceptuje tylko specyfikatory formatu dla godzin, minut i sekund. Każdy inny specyfikator formatu daje wynik null lub 0 zostanie zwrócony.

DATE_FORMAT() Funkcja

DATE_FORMAT() Funkcja umożliwia sformatowanie wartości daty lub daty i godziny na podstawie ciągu formatującego. Ciąg formatu określa sposób formatowania daty/godziny.

Dlatego możemy użyć tych samych specyfikatorów formatu, których użyliśmy w funkcji TIME_FORMAT() funkcji w poprzednim przykładzie. Jednak DATE_FORMAT() nie akceptuje TIME wartość, więc będziemy musieli przekazać DATETIME wartość.

SELECT 
    DATE_FORMAT('2023-01-01 18:45:30', '%H') AS '%H',
    DATE_FORMAT('2023-01-01 18:45:30', '%h') AS '%h',
    DATE_FORMAT('2023-01-01 18:45:30', '%I') AS '%I',
    DATE_FORMAT('2023-01-01 18:45:30', '%k') AS '%k',
    DATE_FORMAT('2023-01-01 18:45:30', '%l') AS '%l';

Wynik:

+------+------+------+------+------+
| %H   | %h   | %I   | %k   | %l   |
+------+------+------+------+------+
| 18   | 06   | 06   | 18   | 6    |
+------+------+------+------+------+

Mija tylko TIME wartość nie do końca pasuje do tej funkcji:

SELECT 
    DATE_FORMAT('18:45:30', '%H') AS '%H',
    DATE_FORMAT('18:45:30', '%h') AS '%h',
    DATE_FORMAT('18:45:30', '%I') AS '%I',
    DATE_FORMAT('18:45:30', '%k') AS '%k',
    DATE_FORMAT('18:45:30', '%l') AS '%l';

Wynik:

+------+------+------+------+------+
| %H   | %h   | %I   | %k   | %l   |
+------+------+------+------+------+
| NULL | NULL | NULL | NULL | NULL |
+------+------+------+------+------+
1 row in set, 5 warnings (0.000 sec)

Pokaż ostrzeżenia:

SHOW WARNINGS;

Wynik:

+---------+------+--------------------------------------+
| Level   | Code | Message                              |
+---------+------+--------------------------------------+
| Warning | 1292 | Incorrect datetime value: '18:45:30' |
| Warning | 1292 | Incorrect datetime value: '18:45:30' |
| Warning | 1292 | Incorrect datetime value: '18:45:30' |
| Warning | 1292 | Incorrect datetime value: '18:45:30' |
| Warning | 1292 | Incorrect datetime value: '18:45:30' |
+---------+------+--------------------------------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MariaDB SESSION_USER() Objaśnienie

  2. Jak uruchamiać aplikacje PHP 5 z MySQL 8.0 na CentOS 7?

  3. Jak REGEXP_INSTR() działa w MariaDB

  4. MaxScale Podstawowe zarządzanie przy użyciu MaxCtrl dla klastra MariaDB

  5. MariaDB JSON_TYPE() Objaśnienie