sql >> Databasteknik >  >> RDS >> MariaDB

Hur TO_CHAR() fungerar i MariaDB

I MariaDB, TO_CHAR() är en inbyggd strängfunktion som konverterar ett datum/tid-uttryck till en sträng.

Uttrycket kan vara ett datum-, datetime-, tid- eller tidsstämpelvärde.

Denna funktion introducerades i MariaDB 10.6.1 för att förbättra Oracle-kompatibiliteten.

Syntax

Syntaxen ser ut så här:

TO_CHAR(expr[, fmt])

Där expr är ett datum, datetime, time eller timestamp värde och fmt är en valfri formatsträng som anger hur utdata ska formateras.

Formatsträngen kan vara något av följande:

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

Standardvärdet är YYYY-MM-DD HH24:MI:SS .

Exempel

Här är ett exempel att visa:

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

Resultat:

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

Lämna ett datum/tidsvärde

Det här exemplet använder ett datetime-värde:

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

Resultat:

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

Ange en formatsträng

Här är ett exempel med en formatsträng:

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

Resultat:

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

Här är en till:

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

Resultat:

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

Numeriska datum

Så här händer när jag anger ett numeriskt datum:

SELECT TO_CHAR(20200101);

Resultat:

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

Ogiltiga datum

Om datumet är ogiltigt, TO_CHAR() returnerar null med en varning:

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

Resultat:

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

Låt oss kolla varningen:

SHOW WARNINGS;

Resultat:

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

Ogiltig formatsträng

Om formatsträngen är ogiltig, TO_CHAR() returnerar ett fel:

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

Resultat:

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

Nullformatsträng

TO_CHAR() returnerar null om formatsträngen är null :

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

Resultat:

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

Ogiltigt antal argument

Att skicka ett ogiltigt antal argument (eller inga argument) resulterar i ett fel:

SELECT TO_CHAR();

Resultat:

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

  1. Hur modellerar man effektivt arv i en databas?

  2. SQL-fråga för 7 dagars rullande medelvärde i SQL Server

  3. MultipleActiveResultSets=Sant eller flera anslutningar?

  4. SQL-nätverksgränssnitt, fel:50 - Runtime-fel för lokal databas uppstod. Det går inte att skapa en automatisk instans