sql >> Databasteknik >  >> RDS >> Mysql

Hur man får tiden från en sträng i MySQL

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.


  1. Hur REGEXP_REPLACE() fungerar i MariaDB

  2. Hur avinstallerar du MySQL från Mac OS X?

  3. SQL Server-säkerhetsöverväganden

  4. Hur SLEEP() fungerar i MariaDB