Nedenfor er 4 funktioner, der gør dig i stand til at returnere timen fra en tidsværdi i MariaDB.
HOUR()
Funktion
HOUR()
funktion returnerer timen for en given TIME
eller DATETIME
udtryk. Den accepterer ét argument, som er det tidspunkt, du vil udtrække timen fra.
Eksempel:
SELECT HOUR('03:45:30');
Resultat:
+------------------+ | HOUR('03:45:30') | +------------------+ | 3 | +------------------+
For klokkeslætsværdier returnerer den timen som et tal i området 0
til 23
. Men intervallet TIME
værdier kan være meget større, og derfor kan den returnerede værdi være meget højere end 23
. Nærmere bestemt TIME
værdier kan være i området '-838:59:59.999999'
til '838:59:59.999999'
.
Her er et eksempel med en større timedel:
SELECT HOUR('838:45:30');
Resultat:
+-------------------+ | HOUR('838:45:30') | +-------------------+ | 838 | +-------------------+
Hvis tiden er uden for det accepterede interval for TIME
værdier, er returværdien 838
med en advarsel.
TIME
værdier kan også være negative. I sådanne tilfælde HOUR()
returnerer en positiv værdi.
EXTRACT()
Funktion
EXTRACT()
funktionen giver dig mulighed for at udtrække en specificeret enhed fra dato/tidsværdien. Derfor kan du bruge den til at udtrække timen (såvel som andre enheder) fra tidsværdien.
Eksempel:
SELECT EXTRACT(HOUR FROM '10:47:01');
Resultat:
+-------------------------------+ | EXTRACT(HOUR FROM '10:47:01') | +-------------------------------+ | 10 | +-------------------------------+
TIME_FORMAT()
Funktion
TIME_FORMAT()
funktion giver dig mulighed for at formatere en tidsværdi baseret på en formatstreng. Formatstrengen angiver, hvordan tiden skal formateres.
Du kan derfor bruge denne funktion til at returnere timen (samt minutter og sekunder) fra tidspunktet. Der er forskellige muligheder for at returnere timen.
Her er et eksempel, der returnerer timen i forskellige former:
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';
Resultat:
+------+------+------+------+------+ | %H | %h | %I | %k | %l | +------+------+------+------+------+ | 18 | 06 | 06 | 18 | 6 | +------+------+------+------+------+
Her er en beskrivelse af hver af disse formatspecifikationer:
Formatspecifikation | Beskrivelse |
---|---|
%H | Time med 2 cifre mellem 00-23. |
%h | Time med 2 cifre mellem 01-12. |
%I | Time med 2 cifre mellem 01-12. |
%k | Time med 1 cifre mellem 0-23. |
%l | Time med 1 cifre mellem 1-12. |
TIME_FORMAT()
funktion accepterer et undersæt af formatstrengene, der kan bruges med DATE_FORMAT()
fungere. Se MariaDB Format Strings for en komplet liste over formatstrenge/specifikationer, der kan bruges med DATE_FORMAT()
. TIME_FORMAT()
Funktionen accepterer kun formatangivelser for timer, minutter og sekunder. Enhver anden formatangivelse resulterer i null
eller 0
bliver returneret.
DATE_FORMAT()
Funktion
DATE_FORMAT()
funktionen giver dig mulighed for at formatere en dato eller dato-tidsværdi baseret på en formatstreng. Formatstrengen angiver, hvordan dato/klokkeslæt skal formateres.
Vi kan derfor bruge de samme formatspecifikationer, som vi brugte med TIME_FORMAT()
funktion i det foregående eksempel. Dog DATE_FORMAT()
accepterer ikke en TIME
værdi, så vi bliver nødt til at sende en DATETIME
værdi.
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';
Resultat:
+------+------+------+------+------+ | %H | %h | %I | %k | %l | +------+------+------+------+------+ | 18 | 06 | 06 | 18 | 6 | +------+------+------+------+------+
Sender kun en TIME
værdi skærer det ikke helt med denne funktion:
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';
Resultat:
+------+------+------+------+------+ | %H | %h | %I | %k | %l | +------+------+------+------+------+ | NULL | NULL | NULL | NULL | NULL | +------+------+------+------+------+ 1 row in set, 5 warnings (0.000 sec)
Vis advarslerne:
SHOW WARNINGS;
Resultat:
+---------+------+--------------------------------------+ | 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' | +---------+------+--------------------------------------+