This is a read-only copy of the MariaDB Knowledgebase generated on 2024-11-14. For the latest, interactive version please visit https://mariadb.com/kb/.

SYSDATE

Sintassi

SYSDATE()

Spiegazione

Restituisce l'orario e la data correnti nel formato 'YYYY-MM-DD HH:MM:SS' o YYYYMMDDHHMMSS.uuuuuu, a seconda che la funzione sia usata in un contesto numerico o stringa.

SYSDATE() restituisce l'orario al quale è stata eseguita. Tale comportamento differisce da quello di NOW(), che restituisce un orario costante che indica quando è iniziata l'esecuzione dell'istruzione. In una Stored Routine e in un Trigger, NOW() restituisce il momento in cui è iniziata l'esecuzione della Stored Routine o del Trigger.

MariaDB [(none)]> SELECT NOW(), SLEEP(2), NOW();
+---------------------+----------+---------------------+
| NOW()               | SLEEP(2) | NOW()               |
+---------------------+----------+---------------------+
| 2010-03-27 13:23:40 |        0 | 2010-03-27 13:23:40 |
+---------------------+----------+---------------------+
1 row in set (2.00 sec)

MariaDB [(none)]> SELECT SYSDATE(), SLEEP(2), SYSDATE();
+---------------------+----------+---------------------+
| SYSDATE()           | SLEEP(2) | SYSDATE()           |
+---------------------+----------+---------------------+
| 2010-03-27 13:23:52 |        0 | 2010-03-27 13:23:54 |
+---------------------+----------+---------------------+
1 row in set (2.00 sec)

MariaDB [(none)]> 

Inoltre l'istruzione SET TIMESTAMP influenza il valore restituito da NOW(), ma non da SYSDATE(). Pertanto l'impostazione del timestamp nel log binario non hanno alcun effetto sulle chiamate a SYSDATE().

Poiché SYSDATE() può restituire valori diversi anche nella stessa istruzione, e non è influenzato da SET TIMESTAMP, non è da considerarsi deterministico; per questo motivo non è sicuro usarlo nella replica, se si usa il logging basato sulle istruzioni. Se questo è un problema si può usare il logging basato sulle righe, oppure avviare il server con l'opzione --sysdate-is-now per far sì che SYSDATE() sia considerata un sinonimo di NOW(). La natura non deterministica di SYSDATE() che non è possibile usare un indice per valutare le espressioni che la contengono.

Vedi anche

Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.