In MariaDB, TO_CHAR()
è una funzione di stringa incorporata che converte un'espressione di data/ora in una stringa.
L'espressione può essere un valore di data, data e ora, ora o timestamp.
Questa funzione è stata introdotta in MariaDB 10.6.1 per migliorare la compatibilità Oracle.
Sintassi
La sintassi è questa:
TO_CHAR(expr[, fmt])
Dove expr
è un valore di data, data e ora, ora o timestamp e fmt
è una stringa di formato opzionale che specifica come formattare l'output.
La stringa di formato può essere una delle seguenti:
YYYY
YYYY
YY
RRRR
RR
MM
MON
MONTH
MI
DD
DY
HH
HH12
HH24
SS
- Caratteri speciali
Il valore predefinito è YYYY-MM-DD HH24:MI:SS
.
Esempio
Ecco un esempio da dimostrare:
SELECT TO_CHAR('2020-01-01');
Risultato:
+-----------------------+ | TO_CHAR('2020-01-01') | +-----------------------+ | 2020-01-01 00:00:00 | +-----------------------+
Passa un valore DateTime
Questo esempio utilizza un valore datetime:
SELECT TO_CHAR('2022-12-25 10:30:45');
Risultato:
+--------------------------------+ | TO_CHAR('2022-12-25 10:30:45') | +--------------------------------+ | 2022-12-25 10:30:45 | +--------------------------------+
Specifica una stringa di formato
Ecco un esempio con una stringa di formato:
SELECT TO_CHAR('2022-12-25 10:30:45', 'YYYY-MM-DD');
Risultato:
+----------------------------------------------+ | TO_CHAR('2022-12-25 10:30:45', 'YYYY-MM-DD') | +----------------------------------------------+ | 2022-12-25 | +----------------------------------------------+
Eccone un altro:
SELECT TO_CHAR('2022-12-25', 'DY, DD MONTH YYYY');
Risultato:
+--------------------------------------------+ | TO_CHAR('2022-12-25', 'DY, DD MONTH YYYY') | +--------------------------------------------+ | Sun, 25 December 2022 | +--------------------------------------------+
Date numeriche
Ecco cosa succede quando fornisco una data numerica:
SELECT TO_CHAR(20200101);
Risultato:
ERROR 3047 (HY000): Invalid argument error: data type of first argument must be type date/datetime/time or string in function to_char.
Date non valide
Se la data non è valida, TO_CHAR()
restituisce null
con un avviso:
SELECT TO_CHAR('2020-01-51');
Risultato:
+-----------------------+ | TO_CHAR('2020-01-51') | +-----------------------+ | NULL | +-----------------------+ 1 row in set, 1 warning (0.001 sec)
Controlliamo l'avviso:
SHOW WARNINGS;
Risultato:
+---------+------+----------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------+ | Warning | 1292 | Incorrect datetime value: '2020-01-51' | +---------+------+----------------------------------------+
Stringa di formato non valida
Se la stringa di formato non è valida, TO_CHAR()
restituisce un errore:
SELECT TO_CHAR('2020-01-01', 'wow');
Risultato:
ERROR 3047 (HY000): Invalid argument error: date format not recognized at wow in function to_char.
Stringa di formato nulla
TO_CHAR()
restituisce null
se la stringa di formato è null
:
SELECT TO_CHAR('2020-01-01', null);
Risultato:
+-----------------------------+ | TO_CHAR('2020-01-01', null) | +-----------------------------+ | NULL | +-----------------------------+
Numero di argomenti non valido
Il passaggio di un numero non valido di argomenti (o nessun argomento) genera un errore:
SELECT TO_CHAR();
Risultato:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TO_CHAR'