MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Como TO_CHAR() funciona no MariaDB


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'