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' | +---------+------+--------------------------------------+