sql >> Database teknologi >  >> RDS >> MariaDB

Sådan fungerer DATE_FORMAT() i MariaDB

I MariaDB, DATE_FORMAT() er en indbygget dato- og tidsfunktion, der formaterer en dato i henhold til den givne formatstreng.

Det kræver to argumenter; datoen og formatstrengen. Den accepterer også et valgfrit tredje argument, der giver dig mulighed for at angive lokaliteten.

Syntaks

Syntaksen ser sådan ud:

DATE_FORMAT(date, format[, locale]) 

Hvor date er datoen, format er formatstrengen (se accepterede formatspecifikationer) og locale er en valgfri lokalitet til brug for det returnerede format.

Eksempel

Her er et eksempel:

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') |+--------------------------- --------------------------------------+| Fredag ​​den 25. januar 2030 |+-------------------------------------------------------- ----------+

Her er den igen, men denne gang ved hjælp af %r for at returnere den returnerede tid i 12 timers format:

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 kombinere dem, så vi får tid og dato:

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 fredag ​​den 25. januar 2030 |+------------------------------------------------ ------------------+

Sproget for månedsnavne, dagnavne osv. bestemmes af lc_time_names systemvariabel. Standarden er altid en_US uanset systemets lokalitetsindstilling. Sådan ser du din nuværende indstilling.

Landestandardargumentet

Fra og med MariaDB 10.3.2 kan et valgfrit tredje argument bruges til at angive lokaliteten. Når dette er angivet, gør det funktionen uafhængig af sessionsindstillingerne.

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. enero 2030 |+--------------------------------------------------- ----------+

Her er nogle flere lokaliteter:

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, 25. janvier 2030hr_HR:Petak, 25. Siječanj 2030fr_FR:Jumaat, 25. januar 2030._TH:ศุกร์, 25. มกกค 2000. 

I dette tilfælde er den sidste thailandsk, og selvom den bruger thailandske tegn som månedsnavn og dagnavn, ændrer den ikke året til den thailandske kalender. Året 2030 ville være 2573, når man bruger den thailandske kalender. Så jeg gætter på, at antagelsen er, at hvis du vil bruge det thailandske år, så vil den dato, du passerer, allerede bruge det thailandske år.

Aktuel dato

Her sender vi NOW() som datoargument for at formatere den aktuelle dato:

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

Resultat:

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

Ugyldige argumenter

Når ugyldige argumenter sendes, DATE_FORMAT() returnerer null :

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

Resultat:

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

Manglende argument

Kalder DATE_FORMAT() med det forkerte antal argumenter, eller uden at sende nogen argumenter, resulterer det i en fejl:

SELECT DATE_FORMAT(); 

Resultat:

FEJL 1064 (42000):Du har en fejl i din SQL-syntaks; tjek manualen, der svarer til din MariaDB-serverversion for den rigtige syntaks til brug i nærheden af ​​')' på linje 1

Og endnu et eksempel:

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

Resultat:

FEJL 1064 (42000):Du har en fejl i din SQL-syntaks; tjek manualen, der svarer til din MariaDB-serverversion for den rigtige syntaks til brug i nærheden af ​​')' på linje 1

GET_FORMAT() Funktion

Du kan også bruge GET_FORMAT() funktion i det andet argument til DATE_FORMAT() . Dette returnerer den fulde formatstreng for et givet datoformat, hvilket sparer dig for at skulle huske den formatstreng, der skal bruges.


  1. Opdatering af en tabel i Oracle, hvis en feltværdi er nul, og afgør, at opdateringen er vellykket

  2. T-SQL trim   (og andre ikke-alfanumeriske tegn)

  3. Åbner Android Sqlite-databasen i fragment

  4. Vil du slette flere rækker ved hjælp af id'er?