Problem:
Du vill extrahera tiden från ett strängvärde i MySQL.
Exempel:
Du har ett strängvärde som ser ut så här:
‘Wednesday, 10 February 2021, 12:30:20’
Du vill bara extrahera tidsdelen, '12:30:20'.
Lösning:
Här är frågan:
SELECT DATE_FORMAT(STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T"), "%T");
Diskussion:
För att illustrera processen tydligare kommer vi att förklara detta i två delar.
Först måste vi konvertera strängen till ett datumvärde. För att göra detta använder vi STR_TO_DATE
fungera. Frågan ska se ut så här:
SELECT STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T”);
Syftet med STR_TO_DATE
Funktionen är att konvertera en textsträng till ett datum- och tidsformat. Syntaxen för denna funktion är följande:
STR_TO_DATE(string, format);
Det första argumentet för denna funktion är strängen vi vill konvertera. Det andra argumentet anger formatet för strängen. I vårt fall använder vi följande parametrar:
- %W:Veckans namn från söndag till lördag.
- %d:Dag i månaden som ett numeriskt värde från 01 till 31.
- %m:Månad som ett numeriskt värde från 01 till 12.
- %Y:År som ett fyrsiffrigt numeriskt värde (åååå).
- %T:Tid i 24-timmarsformat (hh:mm:ss).
Du kan hitta fler parametrar i den officiella dokumentationen för MySQL.
Resultatet av den här frågan bör se ut så här:
2021-02-10 12:30:20
Nu har vi värdet i datatypen DATETIME. För att bara extrahera tiden måste vi lägga till DATE_FORMAT
funktion till frågan ovan.
Den allmänna syntaxen för DATE_FORMAT
Funktionen är:
DATE_FORMAT(date, format)
Då bör vår fråga se ut så här:
SELECT DATE_FORMAT(STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T"), "%T");
I vårt exempel, det första argumentet för DATE_FORMAT
funktion är datumet som härrör från STR_TO_DATE
fungera. Det andra argumentet är formatet, som fungerar på samma sätt som det gör i STR_TO_DATE
fungera. Eftersom vi bara behöver tiden här anger vi "%T
" som det andra argumentet.
Tecknet % är obligatoriskt före formatspecifikationens tecken. Vi måste ange formatet i exakt samma ordning, inklusive alla skiljetecken.
Frågeresultatet som vi ser nedan är det förväntade resultatet.
12:30:20
Genom att använda en kombination av dessa två funktioner kan du extrahera alla möjliga kombinationer av datum och tid från en textsträng.