MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Wie TO_CHAR() in MariaDB funktioniert

In MariaDB TO_CHAR() ist eine integrierte Zeichenfolgenfunktion, die einen Datums-/Uhrzeitausdruck in eine Zeichenfolge umwandelt.

Der Ausdruck kann ein Datums-, Datumszeit-, Zeit- oder Zeitstempelwert sein.

Diese Funktion wurde in MariaDB 10.6.1 eingeführt, um die Oracle-Kompatibilität zu verbessern.

Syntax

Die Syntax lautet wie folgt:

TO_CHAR(expr[, fmt]) 

Wobei expr ist ein Datums-, Datums-, Zeit- oder Zeitstempelwert und fmt ist eine optionale Formatzeichenfolge, die angibt, wie die Ausgabe formatiert werden soll.

Die Formatzeichenfolge kann eine der folgenden sein:

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

Der Standardwert ist YYYY-MM-DD HH24:MI:SS .

Beispiel

Hier ist ein Beispiel zur Veranschaulichung:

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

Ergebnis:

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

Übergeben Sie einen Datetime-Wert

Dieses Beispiel verwendet einen datetime-Wert:

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

Ergebnis:

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

Geben Sie eine Formatzeichenfolge an

Hier ist ein Beispiel mit einem Formatstring:

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

Ergebnis:

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

Hier ist noch einer:

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

Ergebnis:

+--------------------------------------------------+| TO_CHAR('2022-12-25', 'DY, TT MONAT JJJJ') |+------------------------------ --------------+| So, 25. Dezember 2022 |+-------------------------------------------------- -+

Numerische Daten

Folgendes passiert, wenn ich ein numerisches Datum angebe:

SELECT TO_CHAR(20200101); 

Ergebnis:

FEHLER 3047 (HY000):Ungültiger Argumentfehler:Datentyp des ersten Arguments muss Typ date/datetime/time oder string in der Funktion to_char sein.

Ungültige Daten

Wenn das Datum ungültig ist, TO_CHAR() gibt null zurück mit einer Warnung:

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

Ergebnis:

+-----------------------+| TO_CHAR('2020-01-51') |+-----------------------+| NULL |+-----------------------+1 Zeile im Satz, 1 Warnung (0,001 Sek.)

Sehen wir uns die Warnung an:

SHOW WARNINGS; 

Ergebnis:

+---------+------+------------------------------------- -----------+| Ebene | Code | Nachricht |+---------+------+------------------------------ ----------+| Warnung | 1292 | Falscher datetime-Wert:'2020-01-51' |+---------+------+-------------------- --------------------+

Ungültiger Formatstring

Wenn die Formatzeichenfolge ungültig ist, TO_CHAR() gibt einen Fehler zurück:

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

Ergebnis:

FEHLER 3047 (HY000):Ungültiger Argumentfehler:Datumsformat wird bei wow in der Funktion to_char nicht erkannt.

Null-Format-String

TO_CHAR() gibt null zurück wenn der Formatstring null ist :

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

Ergebnis:

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

Ungültige Anzahl von Argumenten

Das Übergeben einer ungültigen Anzahl von Argumenten (oder keiner Argumente) führt zu einem Fehler:

SELECT TO_CHAR(); 

Ergebnis:

FEHLER 1582 (42000):Falsche Parameteranzahl im Aufruf der nativen Funktion 'TO_CHAR'