sql >> Base de Datos >  >> RDS >> MariaDB

Cómo funciona TO_CHAR() en MariaDB

En MariaDB, TO_CHAR() es una función de cadena integrada que convierte una expresión de fecha/hora en una cadena.

La expresión puede ser un valor de fecha, fecha y hora, hora o marca de tiempo.

Esta función se introdujo en MariaDB 10.6.1 para mejorar la compatibilidad con Oracle.

Sintaxis

La sintaxis es así:

TO_CHAR(expr[, fmt])

Donde expr es un valor de fecha, fecha y hora, hora o marca de tiempo, y fmt es una cadena de formato opcional que especifica cómo debe formatearse la salida.

La cadena de formato puede ser cualquiera de las siguientes:

  • YYYY
  • YYYY
  • YY
  • RRRR
  • RR
  • MM
  • MON
  • MONTH
  • MI
  • DD
  • DY
  • HH
  • HH12
  • HH24
  • SS
  • Caracteres especiales

El valor predeterminado es YYYY-MM-DD HH24:MI:SS .

Ejemplo

Aquí hay un ejemplo para demostrarlo:

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

Resultado:

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

Pasar un valor de fecha y hora

Este ejemplo usa un valor de fecha y hora:

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

Resultado:

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

Especifique una cadena de formato

Aquí hay un ejemplo con una cadena 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                                   |
+----------------------------------------------+

Aquí hay otro:

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

Resultado:

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

Fechas numéricas

Esto es lo que sucede cuando proporciono una fecha 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.

Fechas no válidas

Si la fecha no es válida, TO_CHAR() devuelve null con una advertencia:

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

Resultado:

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

Revisemos la advertencia:

SHOW WARNINGS;

Resultado:

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

Cadena de formato no válida

Si la cadena de formato no es válida, TO_CHAR() devuelve un error:

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

Resultado:

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

Cadena de formato nulo

TO_CHAR() devuelve null si la cadena de formato es null :

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

Resultado:

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

Número de argumentos no válido

Pasar un número no válido de argumentos (o ningún argumento) da como resultado un error:

SELECT TO_CHAR();

Resultado:

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