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

Comment ajouter AM/PM à une valeur d'heure ou de date/heure dans MariaDB

MariaDB comprend de nombreuses fonctions qui vous permettent de renvoyer des valeurs d'heure et de date/heure dans une variété de formats.

Deux fonctions vous permettent de formater la partie heure à l'aide d'une horloge de 12 heures, avec l'indicateur AM/PM sont DATE_FORMAT() et TIME_FORMAT() .

De nombreux spécificateurs de format peuvent être utilisés avec ces fonctions, mais seuls quelques-uns renvoient l'indicateur AM/PM.

Le %r Spécificateur de format

Le %r Le spécificateur de format est utilisé pour formater l'heure au format 12 heures, suivi de l'indicateur AM/PM.

Exemple :

SELECT DATE_FORMAT('2030-03-10 18:10:37', '%r'); 

Résultat :

+-------------------------------------------------------+| DATE_FORMAT('2030-03-10 18:10:37', '%r') |+---------------------------- --------------+| 18:10:37 |+-------------------------------------------------- +

L'heure résultante est affichée comme si elle avait été formatée à l'aide de la chaîne de format suivante :'%I:%i:%S %p' .

Évidemment, s'il renvoie AM ou PM dépend de l'heure réelle. Heures avant 12:00:00 renvoie AM et les heures après cela renvoient PM .

Voici ce qui se passe si nous modifions l'heure à venir avant 12:00:00 :

SELECT DATE_FORMAT('2030-03-10 06:10:37', '%r'); 

Résultat :

+-------------------------------------------------------+| DATE_FORMAT('2030-03-10 06:10:37', '%r') |+---------------------------- --------------+| 06:10:37 |+-------------------------------------------------- +

Les deux DATE_FORMAT() et TIME_FORMAT() accepter le %r spécificateur de format, nous pouvons donc utiliser le même spécificateur de format avec le TIME_FORMAT() fonction :

SELECT TIME_FORMAT('06:10:37', '%r'); 

Résultat :

+---------------------------------------------+| TIME_FORMAT('06:10:37', '%r') |+-------------------------------+| 06:10:37 |+---------------------------------------------+

TIME_FORMAT() accepte les valeurs d'heure ainsi que les valeurs datetime, alors que DATE_FORMAT() n'accepte que les valeurs date et datetime. Cependant, TIME_FORMAT() accepte uniquement les spécificateurs de format pour les heures, les minutes et les secondes. Vu comme %r renvoie les heures, les minutes et les secondes, ceci est également accepté.

Le %p Spécificateur de format

Le %p Le spécificateur de format est un spécificateur de format plus spécifique utilisé uniquement pour représenter l'indicateur AM/PM. Il est normalement utilisé en conjonction avec d'autres spécificateurs de format pour renvoyer l'heure dans un format personnalisé.

Comme mentionné, le %r le spécificateur de format formate l'heure comme si elle avait été formatée à l'aide de la chaîne de format suivante :'%I:%i:%S %p' .

Utilisons cette chaîne explicitement :

SELECT TIME_FORMAT('18:10:37', '%I:%i:%S %p'); 

Résultat :

+---------------------------------------------+| TIME_FORMAT('18:10:37', '%I:%i:%S %p') |+------------------------- ---------------+| 18:10:37 |+----------------------------------------+ 

Nous obtenons donc le même résultat qu'en utilisant le %r spécificateur de format.

Cependant, l'un des avantages de l'utilisation de cette méthode est que nous pouvons construire la sortie à notre manière.

Par exemple :

SELECT TIME_FORMAT('18:10:37', '%l:%i %p'); 

Résultat :

+--------------------------------------------------+| TIME_FORMAT('18:10:37', '%l:%i %p') |+---------------------------- ---------+| 18h10 |+------------------------------------------+

Ici, nous avons utilisé %l pour renvoyer la partie heure sans le zéro non significatif. Nous avons également omis la partie secondes du temps.

Voir MariaDB Format Strings pour une liste complète des spécificateurs de format qui peuvent être utilisés avec ces fonctions.