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

Come funziona TIMESTAMP() in MariaDB

In MariaDB, TIMESTAMP() è una funzione di data e ora incorporata che restituisce un valore datetime, basato sui suoi argomenti.

Può essere utilizzato con uno o due argomenti, come segue:

  • Quando viene utilizzato con un argomento, restituisce quell'espressione di data o ora come valore di data e ora.
  • Se utilizzato con due argomenti, aggiunge il secondo argomento (ora) alla prima espressione (data o data/ora), quindi restituisce il valore data/ora risultante.

Sintassi

Può essere utilizzato nei seguenti due modi:

TIMESTAMP(expr)
TIMESTAMP(expr1,expr2)

Dove expr1 è un'espressione di data o data/ora e expr2 è un'espressione temporale da aggiungere a expr1 .

Esempio

Ecco un esempio da dimostrare:

SELECT TIMESTAMP('2030-02-01');

Risultato:

+-------------------------+
| TIMESTAMP('2030-02-01') |
+-------------------------+
| 2030-02-01 00:00:00     |
+-------------------------+

Valori di data e ora

Ecco un esempio di passaggio di un valore datetime:

SELECT TIMESTAMP('2030-02-01 10:30:45');

Risultato:

+----------------------------------+
| TIMESTAMP('2030-02-01 10:30:45') |
+----------------------------------+
| 2030-02-01 10:30:45              |
+----------------------------------+

Secondo argomento

Ecco un esempio che aggiunge il secondo argomento al primo:

SELECT TIMESTAMP('2030-02-01 10:30:45', '02:15:15');

Risultato:

+----------------------------------------------+
| TIMESTAMP('2030-02-01 10:30:45', '02:15:15') |
+----------------------------------------------+
| 2030-02-01 12:46:00                          |
+----------------------------------------------+

Microsecondi

Ecco un esempio che aggiunge microsecondi:

SELECT TIMESTAMP('2030-02-01 10:30:45', '00:00:00.123456');

Risultato:

+-----------------------------------------------------+
| TIMESTAMP('2030-02-01 10:30:45', '00:00:00.123456') |
+-----------------------------------------------------+
| 2030-02-01 10:30:45.123456                          |
+-----------------------------------------------------+

Tempi negativi

I tempi negativi sono validi:

Esempio:

SELECT TIMESTAMP('2030-02-01 10:30:45', '-09:20:00');

Risultato:

+-----------------------------------------------+
| TIMESTAMP('2030-02-01 10:30:45', '-09:20:00') |
+-----------------------------------------------+
| 2030-02-01 01:10:45                           |
+-----------------------------------------------+

Data attuale

Possiamo passare NOW() come argomento datetime per utilizzare la data e l'ora correnti:

SELECT 
    NOW(),
    TIMESTAMP(NOW(), '10:30:45');

Risultato:

+---------------------+------------------------------+
| NOW()               | TIMESTAMP(NOW(), '10:30:45') |
+---------------------+------------------------------+
| 2021-05-28 09:25:09 | 2021-05-28 19:55:54          |
+---------------------+------------------------------+

Argomenti non validi

Quando viene passato un argomento non valido, TIMESTAMP() restituisce null con un avviso:

SELECT TIMESTAMP('Ten Thirty AM');

Risultato:

+----------------------------+
| TIMESTAMP('Ten Thirty AM') |
+----------------------------+
| NULL                       |
+----------------------------+
1 row in set, 1 warning (0.004 sec)

Controlla l'avviso:

SHOW WARNINGS;

Risultato:

+---------+------+---------------------------------------+
| Level   | Code | Message                               |
+---------+------+---------------------------------------+
| Warning | 1292 | Incorrect time value: 'Ten Thirty AM' |
+---------+------+---------------------------------------+

Argomento mancante

Chiamando TIMESTAMP() con il numero errato di argomenti, o senza passare alcun argomento, genera un errore:

SELECT TIMESTAMP();

Risultato:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1

E un altro esempio:

SELECT TIMESTAMP('2020-12-09', '06:30:45', '06:30:45');

Risultato:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' '06:30:45')' at line 1