Problem:
Du vil udtrække tiden fra en strengværdi i MySQL.
Eksempel:
Du har en strengværdi, der ser sådan ud:
‘Wednesday, 10 February 2021, 12:30:20’
Du vil kun udtrække tidsdelen '12:30:20'.
Løsning:
Her er forespørgslen:
SELECT DATE_FORMAT(STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T"), "%T");
Diskussion:
For at illustrere processen mere tydeligt, vil vi forklare dette i to dele.
Først skal vi konvertere strengen til en datoværdi. For at gøre dette bruger vi STR_TO_DATE
fungere. Forespørgslen skal se sådan ud:
SELECT STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T”);
Formålet med STR_TO_DATE
Funktionen er at konvertere en tekststreng til et datetime-format. Syntaksen for denne funktion er som følger:
STR_TO_DATE(string, format);
Det første argument for denne funktion er den streng, vi ønsker at konvertere. Det andet argument angiver formatet af strengen. I vores tilfælde bruger vi følgende parametre:
- %W:Ugedagsnavn fra søndag til lørdag.
- %d:Dag i måneden som en numerisk værdi fra 01 til 31.
- %m:Måned som en numerisk værdi fra 01 til 12.
- %Y:År som en 4-cifret numerisk værdi (åååå).
- %T:Tid i 24-timers format (tt:mm:ss).
Du kan finde flere parametre i den officielle dokumentation for MySQL.
Resultatet af denne forespørgsel skulle se sådan ud:
2021-02-10 12:30:20
Nu har vi værdien i datatypen DATETIME. For kun at udtrække tiden, skal vi tilføje DATE_FORMAT
funktion til forespørgslen ovenfor.
Den generelle syntaks for DATE_FORMAT
Funktionen er:
DATE_FORMAT(date, format)
Så skulle vores forespørgsel se sådan ud:
SELECT DATE_FORMAT(STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T"), "%T");
I vores eksempel er det første argument i DATE_FORMAT
funktion er den dato, der stammer fra STR_TO_DATE
fungere. Det andet argument er formatet, som fungerer på samme måde som det gør i STR_TO_DATE
fungere. Da vi kun har brug for tiden her, angiver vi "%T
" som det andet argument.
%-tegnet er obligatorisk før formatangivelsens tegn. Vi skal angive formatet i nøjagtig samme rækkefølge, inklusive alle tegnsætningstegn.
Forespørgselsresultatet, vi ser nedenfor, er det forventede resultat.
12:30:20
Ved at bruge en kombination af disse to funktioner kan du udtrække enhver mulig kombination af dato og klokkeslæt fra en tekststreng.