Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment obtenir l'heure d'une chaîne dans MySQL

Problème :

Vous souhaitez extraire l'heure d'une valeur de chaîne dans MySQL.

Exemple :

Vous avez une valeur de chaîne qui ressemble à ceci :

‘Wednesday, 10 February 2021, 12:30:20’

Vous souhaitez extraire uniquement la partie horaire, "12:30:20".

Solution :

Voici la requête :

SELECT DATE_FORMAT(STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T"), "%T");

Discussion :

Pour illustrer plus clairement le processus, nous allons l'expliquer en deux parties.

Tout d'abord, nous devons convertir la chaîne en une valeur de date. Pour ce faire, nous utilisons le STR_TO_DATE une fonction. La requête devrait ressembler à ceci :

SELECT STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T”);

Le but du STR_TO_DATE La fonction consiste à convertir une chaîne de texte en un format datetime. La syntaxe de cette fonction est la suivante :

STR_TO_DATE(string, format);

Le premier argument de cette fonction est la chaîne que nous voulons convertir. Le deuxième argument spécifie le format de la chaîne. Dans notre cas, nous utilisons les paramètres suivants :

  • %W :nom du jour de la semaine du dimanche au samedi.
  • %d :jour du mois sous forme de valeur numérique comprise entre 01 et 31.
  • %m :mois sous forme de valeur numérique comprise entre 01 et 12.
  • %Y :année sous forme de valeur numérique à 4 chiffres (aaaa).
  • %T :heure au format 24 heures (hh:mm:ss).

Vous pouvez trouver plus de paramètres dans la documentation officielle de MySQL.

Le résultat de cette requête devrait ressembler à ceci :

2021-02-10 12:30:20

Nous avons maintenant la valeur dans le type de données DATETIME. Pour extraire uniquement l'heure, il faut ajouter le DATE_FORMAT fonction à la requête ci-dessus.

La syntaxe générale du DATE_FORMAT fonction est :

DATE_FORMAT(date, format)

Notre requête devrait alors ressembler à ceci :

SELECT DATE_FORMAT(STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T"), "%T");

Dans notre exemple, le premier argument du DATE_FORMAT fonction est la date résultant du STR_TO_DATE une fonction. Le deuxième argument est le format, qui fonctionne de la même manière que dans le STR_TO_DATE une fonction. Comme nous n'avons besoin que de l'heure ici, nous spécifions "%T " comme deuxième argument.

Le caractère % est obligatoire avant les caractères spécificateurs de format. Nous devons spécifier le format exactement dans le même ordre, y compris tous les signes de ponctuation.

Le résultat de la requête que nous voyons ci-dessous est le résultat attendu.

12:30:20

En utilisant une combinaison de ces deux fonctions, vous pouvez extraire toutes les combinaisons possibles de date et d'heure à partir d'une chaîne de texte.