sql >> Database teknologi >  >> RDS >> Mysql

Sådan formateres dato og klokkeslæt i MySQL

I MySQL er DATE_FORMAT() funktionen giver dig mulighed for at formatere dato og klokkeslæt.

Her er et eksempel:

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

Resultat:

Saturday, 01 December 2018

I dette eksempel, %W er for ugedagsnavnet, %d er for dagen i måneden, %M er for måned og %Y er for år. Der er mange flere formatspecifikationer tilgængelige, som gør det muligt for dig at angive et præcist format for datoer såvel som tidskomponenten.

Formatere tidskomponenten

Her er et eksempel på formatering af tidskomponenten:

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

Resultat:

11:03:15 AM

I dette eksempel, %p bruges til at vise enten AM eller PM, alt efter hvad der er tilfældet.

Du kan selvfølgelig kombinere dem sammen for at formatere både dato og klokkeslæt på én gang:

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

Resultat:

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

Formatering med en dato/tidsfunktion

Ofte vil du gerne bruge DATE_FORMAT() sammen med en anden dato/tidsfunktion. For eksempel kan du bruge det sammen med CURDATE() for at returnere den aktuelle dato, pænt formateret:

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

Resultat:

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

Du kan også gøre dette med NOW() funktion, hvis du har brug for tid:

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

Resultater:

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

FUNKTIONEN TIME_FORMAT()

MySQL har også en TIME_FORMAT() funktion, der kan bruges til at formatere tiden. Denne funktion fungerer på samme måde som DATE_FORMAT() bortset fra at TIME_FORMAT() accepterer kun formatspecifikationer for timer, minutter, sekunder og mikrosekunder.

Eksempel:

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';

Resultater:

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

STR_TO_DATE()-funktionen

STR_TO_DATE() funktion er det omvendte af DATE_FORMAT() fungere. Det giver dig mulighed for at angive en streng, der skal formateres som en dato. Den accepterer to parametre; strengen og formatet.

Her er et eksempel:

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

Resultat:

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

Sådan finder du det korrekte datoformat

MySQL har en praktisk lille funktion kaldet GET_FORMAT() . Denne funktion hjælper dig med at finde det korrekte format, du skal bruge, når du bruger DATE_FORMAT() funktionen og/eller STR_TO_DATE() funktion .

Sådan fungerer det:

SELECT GET_FORMAT(DATE, 'USA');

Dette resulterer i følgende:

%m.%d.%Y

Hvilket fortæller os den formatstreng, vi skal bruge, når vi formaterer en dato med DATE_FORMAT() fungere. For eksempel kunne vi tage resultaterne fra dette eksempel og anvende dem på DATE_FORMAT() funktion:

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

Og vi ender med det ønskede resultat:

05.04.2018

Du kan også sende GET_FORMAT() direkte til DATE_FORMAT() hvis du foretrækker det.

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

Resultat:

05.04.2018

Under alle omstændigheder, nedenfor er eksempler med forskellige muligheder.

Dato

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;

Resultat:

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

Dato og klokkeslæt

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;

Resultat:

+-------------------+-------------------+-------------------+-------------------+--------------+
| 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 |
+-------------------+-------------------+-------------------+-------------------+--------------+

Tid

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; 

Resultat:

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


  1. FEJL:tilladelse nægtet for skema user1_gmail_com ved tegn 46

  2. Introduktion til SQL-gruppering og sammenlægning

  3. Sådan laver du en brevfletning i Access 2016

  4. cx_Oracle:Hvordan kan jeg modtage hver række som en ordbog?