sql >> Database >  >> RDS >> MariaDB

Hoe TO_CHAR() werkt in MariaDB

In MariaDB, TO_CHAR() is een ingebouwde tekenreeksfunctie die een datum/tijd-uitdrukking omzet in een tekenreeks.

De expressie kan een datum-, datetime-, tijd- of tijdstempelwaarde zijn.

Deze functie is geïntroduceerd in MariaDB 10.6.1 om de compatibiliteit met Oracle te verbeteren.

Syntaxis

De syntaxis gaat als volgt:

TO_CHAR(expr[, fmt])

Waar expr is een datum, datum/tijd, tijd of tijdstempelwaarde, en fmt is een optionele opmaakreeks die aangeeft hoe de uitvoer moet worden opgemaakt.

De opmaakreeks kan een van de volgende zijn:

  • YYYY
  • YYY
  • YY
  • RRRR
  • RR
  • MM
  • MON
  • MONTH
  • MI
  • DD
  • DY
  • HH
  • HH12
  • HH24
  • SS
  • Speciale tekens

De standaardwaarde is YYYY-MM-DD HH24:MI:SS .

Voorbeeld

Hier is een voorbeeld om te demonstreren:

SELECT TO_CHAR('2020-01-01');

Resultaat:

+-----------------------+
| TO_CHAR('2020-01-01') |
+-----------------------+
| 2020-01-01 00:00:00   |
+-----------------------+

Geef een Datetime-waarde door

In dit voorbeeld wordt een datetime-waarde gebruikt:

SELECT TO_CHAR('2022-12-25 10:30:45');

Resultaat:

+--------------------------------+
| TO_CHAR('2022-12-25 10:30:45') |
+--------------------------------+
| 2022-12-25 10:30:45            |
+--------------------------------+

Geef een opmaakreeks op

Hier is een voorbeeld met een format string:

SELECT TO_CHAR('2022-12-25 10:30:45', 'YYYY-MM-DD');

Resultaat:

+----------------------------------------------+
| TO_CHAR('2022-12-25 10:30:45', 'YYYY-MM-DD') |
+----------------------------------------------+
| 2022-12-25                                   |
+----------------------------------------------+

Hier is er nog een:

SELECT TO_CHAR('2022-12-25', 'DY, DD MONTH YYYY');

Resultaat:

+--------------------------------------------+
| TO_CHAR('2022-12-25', 'DY, DD MONTH YYYY') |
+--------------------------------------------+
| Sun, 25 December  2022                     |
+--------------------------------------------+

Numerieke datums

Dit gebeurt er als ik een numerieke datum opgeef:

SELECT TO_CHAR(20200101);

Resultaat:

ERROR 3047 (HY000): Invalid argument error: data type of first argument must be type date/datetime/time or string in function to_char.

Ongeldige datums

Als de datum ongeldig is, TO_CHAR() retourneert null met een waarschuwing:

SELECT TO_CHAR('2020-01-51');

Resultaat:

+-----------------------+
| TO_CHAR('2020-01-51') |
+-----------------------+
| NULL                  |
+-----------------------+
1 row in set, 1 warning (0.001 sec)

Laten we de waarschuwing eens bekijken:

SHOW WARNINGS;

Resultaat:

+---------+------+----------------------------------------+
| Level   | Code | Message                                |
+---------+------+----------------------------------------+
| Warning | 1292 | Incorrect datetime value: '2020-01-51' |
+---------+------+----------------------------------------+

Ongeldige notatietekenreeks

Als de opmaakreeks ongeldig is, TO_CHAR() geeft een fout:

SELECT TO_CHAR('2020-01-01', 'wow');

Resultaat:

ERROR 3047 (HY000): Invalid argument error: date format not recognized at wow in function to_char.

Null-opmaaktekenreeks

TO_CHAR() retourneert null als de opmaakreeks null . is :

SELECT TO_CHAR('2020-01-01', null);

Resultaat:

+-----------------------------+
| TO_CHAR('2020-01-01', null) |
+-----------------------------+
| NULL                        |
+-----------------------------+

Ongeldig aantal argumenten

Het doorgeven van een ongeldig aantal argumenten (of geen argumenten) resulteert in een fout:

SELECT TO_CHAR();

Resultaat:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TO_CHAR'

  1. SELECTEER AANTAL() versus mysql_num_rows();

  2. PostgreSQL:FOUT:42601:een kolomdefinitielijst is vereist voor functies die record retourneren

  3. Is er een alternatief voor TOP in MySQL?

  4. PostgreSQL 12-prestaties bewaken met OmniDB - deel 1