sql >> Databasteknik >  >> RDS >> MariaDB

Hur DATE_FORMAT() fungerar i MariaDB

I MariaDB, DATE_FORMAT() är en inbyggd datum- och tidsfunktion som formaterar ett datum enligt den givna formatsträngen.

Det kräver två argument; datumet och formatsträngen. Den accepterar också ett valfritt tredje argument som låter dig specificera språket.

Syntax

Syntaxen ser ut så här:

DATE_FORMAT(date, format[, locale]) 

Där date är datumet, format är formatsträngen (se godkända formatspecifikationer) och locale är ett valfritt språk att använda för det returnerade formatet.

Exempel

Här är ett exempel:

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

Resultat:

+------------------------------------------------------ ------+| DATE_FORMAT('2030-01-25 10:30:45', '%W, %D %M %Y') |+--------------------------- ------------------------------------+| Fredagen den 25 januari 2030 |+-------------------------------------------------------- ----------+

Här är den igen, men den här gången med %r för att returnera tiden som returneras i 12-timmarsformat:

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

Resultat:

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

Vi kan kombinera dem, så att vi får tid och datum:

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

Resultat:

+------------------------------------------------------ ----------+| DATE_FORMAT('2030-01-25 10:30:45', '%r %W, %D %M %Y') |+------------------- ------------------------------------+| 10:30:45 Fredagen den 25 januari 2030 |+------------------------------------------------ ------------------+

Språket för månadsnamn, dagnamn etc bestäms av lc_time_names systemvariabel. Standard är alltid en_US oberoende av systemets lokalinställning. Så här ser du din nuvarande inställning.

Lägenhetsargumentet

Från och med MariaDB 10.3.2 kan ett valfritt tredje argument användas för att ange lokalen. När detta är specificerat gör det funktionen oberoende av sessionsinställningarna.

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

Resultat:

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

Här är några fler lokaler:

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; 

Resultat:

fr_FR:vendredi, 25th janvier 2030hr_HR:Petak, 25th Siječanj 2030fr_FR:Jumaat, 25th Januari 2030th_TH:ศุกร์, 25th มกกค มกคpre 

I det här fallet är den sista thailändska, och även om den använder thailändska tecken för månadsnamn och dagnamn, ändrar den inte året till den thailändska kalendern. År 2030 skulle vara 2573 när man använder den thailändska kalendern. Så jag antar att antagandet är att om du vill använda det thailändska året, så kommer datumet du passerar redan att använda det thailändska året.

Aktuellt datum

Här skickar vi NOW() som datumargument för att formatera det aktuella datumet:

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

Resultat:

+-----------------------------------------------+| DATE_FORMAT(NU(), '%r %W, %D %M %Y') |+-------------------------------- -----------+| 09:53:00 tisdag 11 maj 2021 |+------------------------------------------------ --+

Ogiltiga argument

När några ogiltiga argument skickades, DATE_FORMAT() returnerar null :

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

Resultat:

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

Argument saknas

Ringer DATE_FORMAT() med fel antal argument, eller utan att skicka några argument, resulterar i ett fel:

SELECT DATE_FORMAT(); 

Resultat:

ERROR 1064 (42000):Du har ett fel i din SQL-syntax; kontrollera manualen som motsvarar din MariaDB-serverversion för rätt syntax att använda nära ')' på rad 1

Och ett annat exempel:

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

Resultat:

ERROR 1064 (42000):Du har ett fel i din SQL-syntax; kontrollera manualen som motsvarar din MariaDB-serverversion för rätt syntax att använda nära ')' på rad 1

GET_FORMAT() Funktion

Du kan också använda GET_FORMAT() funktion i det andra argumentet till DATE_FORMAT() . Detta returnerar hela formatsträngen för ett givet datumformat, vilket gör att du slipper komma ihåg formatsträngen som ska användas.


  1. Hitta närmaste latitud/longitud med en SQL-fråga

  2. Tar bort objekt från ListView och Database med OnItemClickListener

  3. Hur ROWNUM fungerar i sidnumreringsfråga?

  4. SSIS källformat Implicit konvertering för datum och tid