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