Hieronder staan 4 functies waarmee u het uur kunt retourneren vanuit een tijdwaarde in MariaDB.
Het HOUR()
Functie
Het HOUR()
functie retourneert het uur voor een gegeven TIME
of DATETIME
uitdrukking. Het accepteert één argument, namelijk de tijd waaruit je het uur wilt halen.
Voorbeeld:
SELECT HOUR('03:45:30');
Resultaat:
+------------------+ | HOUR('03:45:30') | +------------------+ | 3 | +------------------+
Voor waarden voor de tijd van de dag wordt het uur geretourneerd als een getal in het bereik 0
tot 23
. Het bereik van TIME
waarden kunnen veel groter zijn en daarom kan de geretourneerde waarde veel hoger zijn dan 23
. In het bijzonder TIME
waarden kunnen in het bereik liggen '-838:59:59.999999'
naar '838:59:59.999999'
.
Hier is een voorbeeld met een groter uurdeel:
SELECT HOUR('838:45:30');
Resultaat:
+-------------------+ | HOUR('838:45:30') | +-------------------+ | 838 | +-------------------+
Als de tijd buiten het geaccepteerde bereik valt voor TIME
waarden, is de retourwaarde 838
met een waarschuwing.
TIME
waarden kunnen ook negatief zijn. In dergelijke gevallen, HOUR()
geeft een positieve waarde terug.
De EXTRACT()
Functie
De EXTRACT()
Met deze functie kunt u een gespecificeerde eenheid extraheren uit de datum/tijd-waarde. Daarom kunt u het gebruiken om het uur (evenals andere eenheden) uit de tijdwaarde te extraheren.
Voorbeeld:
SELECT EXTRACT(HOUR FROM '10:47:01');
Resultaat:
+-------------------------------+ | EXTRACT(HOUR FROM '10:47:01') | +-------------------------------+ | 10 | +-------------------------------+
De TIME_FORMAT()
Functie
De TIME_FORMAT()
Met deze functie kunt u een tijdwaarde opmaken op basis van een opmaakreeks. De format string geeft aan hoe de tijd moet worden geformatteerd.
U kunt deze functie dus gebruiken om het uur (evenals minuten en seconden) uit de tijd terug te halen. Er zijn verschillende mogelijkheden om het uur terug te geven.
Hier is een voorbeeld dat het uur in verschillende vormen retourneert:
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';
Resultaat:
+------+------+------+------+------+ | %H | %h | %I | %k | %l | +------+------+------+------+------+ | 18 | 06 | 06 | 18 | 6 | +------+------+------+------+------+
Hier is een beschrijving van elk van deze formaatspecificaties:
Formaatspecificatie | Beschrijving |
---|---|
%H | Uur met 2 cijfers tussen 00-23. |
%h | Uur met 2 cijfers tussen 01-12. |
%I | Uur met 2 cijfers tussen 01-12. |
%k | Uur met 1 cijfers tussen 0-23. |
%l | Uur met 1 cijfers tussen 1-12. |
De TIME_FORMAT()
functie accepteert een subset van de format strings die gebruikt kunnen worden met de DATE_FORMAT()
functie. Zie MariaDB Format Strings voor een volledige lijst van format strings/specificaties die kunnen worden gebruikt met DATE_FORMAT()
. De TIME_FORMAT()
functie accepteert alleen formaatspecificaties voor uren, minuten en seconden. Elke andere indelingsspecificatie resulteert in null
of 0
wordt geretourneerd.
De DATE_FORMAT()
Functie
De DATE_FORMAT()
Met deze functie kunt u een datum- of datetime-waarde opmaken op basis van een notatiereeks. De format string geeft aan hoe de datum/tijd moet worden opgemaakt.
We kunnen daarom dezelfde formaatspecificaties gebruiken die we gebruikten met de TIME_FORMAT()
functie in het vorige voorbeeld. Echter, DATE_FORMAT()
accepteert geen TIME
waarde, dus we moeten een DATETIME
. doorgeven waarde.
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';
Resultaat:
+------+------+------+------+------+ | %H | %h | %I | %k | %l | +------+------+------+------+------+ | 18 | 06 | 06 | 18 | 6 | +------+------+------+------+------+
Slechts een TIME
voorbijgaan waarde past niet helemaal bij deze functie:
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';
Resultaat:
+------+------+------+------+------+ | %H | %h | %I | %k | %l | +------+------+------+------+------+ | NULL | NULL | NULL | NULL | NULL | +------+------+------+------+------+ 1 row in set, 5 warnings (0.000 sec)
Toon de waarschuwingen:
SHOW WARNINGS;
Resultaat:
+---------+------+--------------------------------------+ | 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' | +---------+------+--------------------------------------+