MariaDB
 sql >> Database >  >> RDS >> MariaDB

Come funziona TO_CHAR() in MariaDB

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'