No MariaDB,
TO_CHAR()
é uma função de string interna que converte uma expressão de data/hora em uma string. A expressão pode ser um valor de data, data e hora, hora ou carimbo de data/hora.
Essa função foi introduzida no MariaDB 10.6.1 para aprimorar a compatibilidade do Oracle.
Sintaxe
A sintaxe fica assim:
TO_CHAR(expr[, fmt])
Onde
expr
é um valor de data, data e hora, hora ou carimbo de data/hora e fmt
é uma string de formato opcional que especifica como a saída deve ser formatada. A string de formato pode ser qualquer um dos seguintes:
YYYY
YYYY
YY
RRRR
RR
MM
MON
MONTH
MI
DD
DY
HH
HH12
HH24
SS
- Caracteres especiais
O valor padrão é
YYYY-MM-DD HH24:MI:SS
. Exemplo
Segue um exemplo para demonstrar:
SELECT TO_CHAR('2020-01-01');
Resultado:
+-----------------------+ | TO_CHAR('2020-01-01') | +-----------------------+ | 2020-01-01 00:00:00 | +-----------------------+
Passar um valor de data e hora
Este exemplo usa um valor datetime:
SELECT TO_CHAR('2022-12-25 10:30:45');
Resultado:
+--------------------------------+ | TO_CHAR('2022-12-25 10:30:45') | +--------------------------------+ | 2022-12-25 10:30:45 | +--------------------------------+
Especificar uma string de formato
Aqui está um exemplo com uma string de formato:
SELECT TO_CHAR('2022-12-25 10:30:45', 'YYYY-MM-DD');
Resultado:
+----------------------------------------------+ | TO_CHAR('2022-12-25 10:30:45', 'YYYY-MM-DD') | +----------------------------------------------+ | 2022-12-25 | +----------------------------------------------+
Aqui está mais um:
SELECT TO_CHAR('2022-12-25', 'DY, DD MONTH YYYY');
Resultado:
+--------------------------------------------+ | TO_CHAR('2022-12-25', 'DY, DD MONTH YYYY') | +--------------------------------------------+ | Sun, 25 December 2022 | +--------------------------------------------+
Datas numéricas
Veja o que acontece quando forneço uma data numérica:
SELECT TO_CHAR(20200101);
Resultado:
ERROR 3047 (HY000): Invalid argument error: data type of first argument must be type date/datetime/time or string in function to_char.
Datas inválidas
Se a data for inválida,
TO_CHAR()
retorna null
com um aviso:SELECT TO_CHAR('2020-01-51');
Resultado:
+-----------------------+ | TO_CHAR('2020-01-51') | +-----------------------+ | NULL | +-----------------------+ 1 row in set, 1 warning (0.001 sec)
Vamos verificar o aviso:
SHOW WARNINGS;
Resultado:
+---------+------+----------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------+ | Warning | 1292 | Incorrect datetime value: '2020-01-51' | +---------+------+----------------------------------------+
String de formato inválido
Se a string de formato for inválida,
TO_CHAR()
retorna um erro:SELECT TO_CHAR('2020-01-01', 'wow');
Resultado:
ERROR 3047 (HY000): Invalid argument error: date format not recognized at wow in function to_char.
String de formato nulo
TO_CHAR()
retorna null
se a string de formato for null
:SELECT TO_CHAR('2020-01-01', null);
Resultado:
+-----------------------------+ | TO_CHAR('2020-01-01', null) | +-----------------------------+ | NULL | +-----------------------------+
Número inválido de argumentos
Passar um número inválido de argumentos (ou nenhum argumento) resulta em um erro:
SELECT TO_CHAR();
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TO_CHAR'