sql >> Databáze >  >> RDS >> Mysql

Jak formátovat datum a čas v MySQL

V MySQL, DATE_FORMAT() Funkce umožňuje formátovat datum a čas.

Zde je příklad:

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

Výsledek:

Saturday, 01 December 2018

V tomto příkladu %W je pro název dne v týdnu %d je pro den v měsíci, %M je pro měsíc a %Y je pro rok. K dispozici je mnoho dalších specifikátorů formátu, které vám umožňují určit přesný formát pro data a také časovou složku.

Formátování časové složky

Zde je příklad formátování časové složky:

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

Výsledek:

11:03:15 AM

V tomto příkladu %p se používá k zobrazení AM nebo PM, podle toho, o jaký případ jde.

Samozřejmě je můžete zkombinovat a naformátovat tak datum i čas najednou:

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

Výsledek:

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

Formátování pomocí funkce data/času

Často budete chtít použít DATE_FORMAT() spolu s další funkcí data/času. Můžete jej například použít spolu s CURDATE() vrátit aktuální datum v pěkném formátu:

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

Výsledek:

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

Můžete to také provést pomocí NOW() funkce, pokud potřebujete čas:

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

Výsledky:

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

Funkce TIME_FORMAT()

MySQL má také TIME_FORMAT() funkce, kterou lze použít k formátování času. Tato funkce funguje podobně jako DATE_FORMAT() kromě toho TIME_FORMAT() přijímá pouze specifikátory formátu pouze pro hodiny, minuty, sekundy a mikrosekundy.

Příklad:

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

Výsledky:

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

Funkce STR_TO_DATE()

STR_TO_DATE() funkce je inverzní k DATE_FORMAT() funkce. Umožňuje vám zadat řetězec, který bude formátován jako datum. Přijímá dva parametry; řetězec a formát.

Zde je příklad:

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

Výsledek:

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

Jak najít správný formát data

MySQL má šikovnou malou funkci nazvanou GET_FORMAT() . Tato funkce vám pomůže najít správný formát pro použití při použití DATE_FORMAT() funkce a/nebo STR_TO_DATE() funkce .

Funguje to takto:

SELECT GET_FORMAT(DATE, 'USA');

Výsledkem je následující:

%m.%d.%Y

Což nám říká formátovací řetězec, který bychom měli použít při formátování data pomocí DATE_FORMAT() funkce. Mohli bychom například vzít výsledky z tohoto příkladu a aplikovat je na DATE_FORMAT() funkce:

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

A skončili bychom s požadovaným výsledkem:

05.04.2018

Můžete také předat GET_FORMAT() přímo na DATE_FORMAT() chcete-li.

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

Výsledek:

05.04.2018

V každém případě jsou níže uvedeny příklady s různými možnostmi.

Datum

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;

Výsledek:

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

Datum a čas

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;

Výsledek:

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

Čas

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; 

Výsledek:

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


  1. kam mám umístit instalační prostředky (soubor wxs, dmg-script, ikona) a jak nakonfigurovat maven antrun při nasazení samostatné aplikace

  2. Příklady MONTH() v SQL Server (T-SQL)

  3. Jak Cot() funguje v PostgreSQL

  4. Oracle 10g Time Zone Confusion