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

Comment formater la date et l'heure dans MySQL

Dans MySQL, le DATE_FORMAT() permet de formater la date et l'heure.

Voici un exemple :

SELECT DATE_FORMAT('2018-12-01', '%W, %d %M %Y');

Résultat :

Saturday, 01 December 2018

Dans cet exemple, %W est pour le nom du jour de la semaine, %d correspond au jour du mois, %M est pour le mois, et %Y est pour l'année. Il existe de nombreux autres spécificateurs de format disponibles qui vous permettent de spécifier un format précis pour les dates, ainsi que le composant horaire.

Formater le composant de temps

Voici un exemple de mise en forme du composant horaire :

SELECT DATE_FORMAT('2018-12-01 11:03:15', '%H:%i:%s %p');

Résultat :

11:03:15 AM

Dans cet exemple, %p est utilisé pour afficher AM ou PM, selon le cas.

Bien sûr, vous pouvez les combiner pour formater à la fois la date et l'heure :

SELECT DATE_FORMAT('2018-12-01 11:03:15', '%H:%i:%s %p, %W, %d %M %Y');

Résultat :

11:03:15 AM, Saturday, 01 December 2018

Formatage avec une fonction date/heure

Souvent, vous voudrez utiliser DATE_FORMAT() avec une autre fonction date/heure. Par exemple, vous pouvez l'utiliser avec CURDATE() pour renvoyer la date actuelle, bien formatée :

SELECT 
 CURDATE() AS Unformatted, 
 DATE_FORMAT(CURDATE(), '%W, %M %d, %Y') AS Formatted;

Résultat :

+-------------+----------------------+
| Unformatted | Formatted            |
+-------------+----------------------+
| 2018-05-04  | Friday, May 04, 2018 |
+-------------+----------------------+

Vous pouvez également le faire avec le NOW() fonction si vous avez besoin de temps :

SELECT
 NOW() AS Unformatted,
 DATE_FORMAT(NOW(), '%r') AS Formatted;

Résultats :

+---------------------+-------------+
| Unformatted         | Formatted   |
+---------------------+-------------+
| 2018-05-04 14:33:52 | 02:33:52 PM |
+---------------------+-------------+

La fonction TIME_FORMAT()

MySQL a également un TIME_FORMAT() fonction qui peut être utilisée pour formater l'heure. Cette fonction fonctionne comme DATE_FORMAT() sauf que TIME_FORMAT() n'accepte que les spécificateurs de format pour les heures, les minutes, les secondes et les microsecondes.

Exemple :

SET @time = '07:35:10';
 SELECT
 TIME_FORMAT(@time, '%H') AS Hour,
 TIME_FORMAT(@time, '%i') AS Minute,
 TIME_FORMAT(@time, '%s') As Seconds,
 TIME_FORMAT(@time, '%p') AS 'AM or PM';

Résultats :

+------+--------+---------+----------+
| Hour | Minute | Seconds | AM or PM |
+------+--------+---------+----------+
| 07   | 35     | 10      | AM       |
+------+--------+---------+----------+

La fonction STR_TO_DATE()

Le STR_TO_DATE() la fonction est l'inverse de DATE_FORMAT() une fonction. Il vous permet de fournir une chaîne à formater en tant que date. Il accepte deux paramètres ; la chaîne et le format.

Voici un exemple :

SELECT STR_TO_DATE('Saturday, 6 December 2018', '%W, %d %M %Y') AS Date;

Résultat :

+------------+
| Date       |
+------------+
| 2018-12-06 |
+------------+

Comment trouver le format de date correct

MySQL a une petite fonction pratique appelée GET_FORMAT() . Cette fonction vous aide à trouver le format correct à utiliser lors de l'utilisation de DATE_FORMAT() fonction et/ou le STR_TO_DATE() fonction .

Voici comment cela fonctionne :

SELECT GET_FORMAT(DATE, 'USA');

Il en résulte ce qui suit :

%m.%d.%Y

Ce qui nous indique la chaîne de format que nous aurions besoin d'utiliser lors du formatage d'une date avec le DATE_FORMAT() une fonction. Par exemple, nous pourrions prendre les résultats de cet exemple et les appliquer au DATE_FORMAT() fonction :

SELECT DATE_FORMAT(NOW(), '%m.%d.%Y');

Et nous nous retrouverions avec le résultat souhaité :

05.04.2018

Vous pouvez également passer GET_FORMAT() directement à DATE_FORMAT() si vous préférez.

SELECT DATE_FORMAT(NOW(), GET_FORMAT(DATE, 'USA'));

Résultat :

05.04.2018

Dans tous les cas, voici des exemples avec diverses options.

Date

SELECT 
    GET_FORMAT(DATE, 'USA') AS USA,
    GET_FORMAT(DATE, 'JIS') AS JIS,
    GET_FORMAT(DATE, 'ISO') AS ISO,
    GET_FORMAT(DATE, 'EUR') AS EUR,
    GET_FORMAT(DATE, 'INTERNAL') AS INTERNAL;

Résultat :

+----------+----------+----------+----------+----------+
| USA      | JIS      | ISO      | EUR      | INTERNAL |
+----------+----------+----------+----------+----------+
| %m.%d.%Y | %Y-%m-%d | %Y-%m-%d | %d.%m.%Y | %Y%m%d   |
+----------+----------+----------+----------+----------+

Dateheure

SELECT 
    GET_FORMAT(DATETIME, 'USA') AS USA,
    GET_FORMAT(DATETIME, 'JIS') AS JIS,
    GET_FORMAT(DATETIME, 'ISO') AS ISO,
    GET_FORMAT(DATETIME, 'EUR') AS EUR,
    GET_FORMAT(DATETIME, 'INTERNAL') AS INTERNAL;

Résultat :

+-------------------+-------------------+-------------------+-------------------+--------------+
| USA               | JIS               | ISO               | EUR               | INTERNAL     |
+-------------------+-------------------+-------------------+-------------------+--------------+
| %Y-%m-%d %H.%i.%s | %Y-%m-%d %H:%i:%s | %Y-%m-%d %H:%i:%s | %Y-%m-%d %H.%i.%s | %Y%m%d%H%i%s |
+-------------------+-------------------+-------------------+-------------------+--------------+

Heure

SELECT 
    GET_FORMAT(TIME, 'USA') AS USA,
    GET_FORMAT(TIME, 'JIS') AS JIS,
    GET_FORMAT(TIME, 'ISO') AS ISO,
    GET_FORMAT(TIME, 'EUR') AS EUR,
    GET_FORMAT(TIME, 'INTERNAL') AS INTERNAL; 

Résultat :

+-------------+----------+----------+----------+----------+
| USA         | JIS      | ISO      | EUR      | INTERNAL |
+-------------+----------+----------+----------+----------+
| %h:%i:%s %p | %H:%i:%s | %H:%i:%s | %H.%i.%s | %H%i%s   |
+-------------+----------+----------+----------+----------+