sql >> Databáze >  >> RDS >> MariaDB

Jak funguje DATE_FORMAT() v MariaDB

V MariaDB, DATE_FORMAT() je vestavěná funkce data a času, která formátuje datum podle daného formátovacího řetězce.

Vyžaduje to dva argumenty; datum a formátovací řetězec. Přijímá také volitelný třetí argument, který vám umožňuje určit národní prostředí.

Syntaxe

Syntaxe vypadá takto:

DATE_FORMAT(date, format[, locale]) 

Kde date je datum, format je formátovací řetězec (viz akceptované specifikátory formátu) a locale je volitelné národní prostředí, které se má použít pro vrácený formát.

Příklad

Zde je příklad:

SELECT DATE_FORMAT('2030-01-25 10:30:45', '%W, %D %M %Y'); 

Výsledek:

+---------------------------------------------- ------+| DATE_FORMAT('2030-01-25 10:30:45', '%W, %D %M %Y') |+---------------------- -------------------------------+| Pátek, 25. ledna 2030 |+-------------------------------------------- ---------+

Tady je to znovu, ale tentokrát pomocí %r vrátit čas vrácený ve 12hodinovém formátu:

SELECT DATE_FORMAT('2030-01-25 10:30:45', '%r'); 

Výsledek:

+------------------------------------------+| DATE_FORMAT('2030-01-25 10:30:45', '%r') |+----------------------------- ---------------+| 10:30:45 |+------------------------------------------ +

Můžeme je kombinovat, takže získáme čas a datum:

SELECT DATE_FORMAT('2030-01-25 10:30:45', '%r %W, %D %M %Y'); 

Výsledek:

+---------------------------------------------- ---------+| DATE_FORMAT('2030-01-25 10:30:45', '%r %W, %D %M %Y') |+------------------- ------------------------------------+| 10:30:45 pátek, 25. ledna 2030 |+-------------------------------------- ------------------+

Jazyk názvů měsíců, dnů atd. je určen pomocí lc_time_names systémová proměnná. Výchozí hodnota je vždy en_US bez ohledu na místní nastavení systému. Zde je návod, jak zobrazit své aktuální nastavení.

Argument národního prostředí

Počínaje MariaDB 10.3.2 lze k určení národního prostředí použít volitelný třetí argument. Když je toto specifikováno, funkce je nezávislá na nastavení relace.

SELECT DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'es_PR'); 

Výsledek:

+---------------------------------------------- ------+| DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'es_PR') |+----------------------- ------------------------------+| viernes, 25. enero 2030 |+-------------------------------------------- ---------+

Zde jsou některé další lokality:

SELECT 
    DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'fr_FR') AS fr_FR,
    DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'hr_HR') AS hr_HR,
    DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'ms_MY') AS fr_FR,
    DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'th_TH') AS th_TH; 

Výsledek:

fr_FR:vendredi, 25. leden 2030 hod_HR:Petak, 25. Siječanj 2030fr_FR:Jumaat, 25. ledna 2030._TH:ศุกร์, 25. รมคpre> 

V tomto případě je poslední thajština, a přestože používá thajské znaky pro název měsíce a název dne, nemění rok na thajský kalendář. Rok 2030 by při použití thajského kalendáře byl 2573. Předpokládám tedy, že pokud chcete použít thajský rok, pak datum, které projdete, již bude používat thajský rok.

Aktuální datum

Zde předáme NOW() jako argument data pro formátování aktuálního data:

SELECT DATE_FORMAT(NOW(), '%r %W, %D %M %Y'); 

Výsledek:

+---------------------------------------+| DATE_FORMAT(NOW(), '%r %W, %D %M %Y') |+---------------------------- -----------+| 09:53:00 Úterý, 11. května 2021 |+-------------------------------------- --+

Neplatné argumenty

Po předání neplatných argumentů DATE_FORMAT() vrátí null :

SELECT DATE_FORMAT('Homer', 'Simpson'); 

Výsledek:

+---------------------------------+| DATE_FORMAT('Homer', 'Simpson') |+---------------------------------+| NULL |+---------------------------------+

Chybí argument

Volání DATE_FORMAT() s nesprávným počtem argumentů nebo bez předání jakýchkoli argumentů vede k chybě:

SELECT DATE_FORMAT(); 

Výsledek:

ERROR 1064 (42000):Máte chybu v syntaxi SQL; podívejte se do manuálu, který odpovídá verzi vašeho serveru MariaDB, kde najdete správnou syntaxi blízko ')' na řádku 1

A další příklad:

SELECT DATE_FORMAT('2030-05-21'); 

Výsledek:

ERROR 1064 (42000):Máte chybu v syntaxi SQL; podívejte se do manuálu, který odpovídá verzi vašeho serveru MariaDB, kde najdete správnou syntaxi blízko ')' na řádku 1

GET_FORMAT() Funkce

Můžete také použít GET_FORMAT() funkce ve druhém argumentu DATE_FORMAT() . To vrátí celý formátovací řetězec pro daný formát data, což vám ušetří, že si nebudete muset pamatovat formátovací řetězec, který chcete použít.


  1. Délka indexu varchar MySQL

  2. Postgres - jak vrátit řádky s počtem 0 pro chybějící data?

  3. Jak funguje TIME_TO_SEC() v MariaDB

  4. PostgreSQL zakáže více výstupu