sql >> Database >  >> RDS >> MariaDB

Verschil tussen SYSDATE() en NOW() in MariaDB

In MariaDB, de SYSDATE() en NOW() functies zijn vergelijkbaar in die zin dat ze de huidige datum en tijd retourneren.

Er is echter een belangrijk verschil:SYSDATE() geeft de tijd terug dat het wordt uitgevoerd, terwijl NOW() geeft de tijd terug waarop de instructie werd uitgevoerd.

En wanneer uitgevoerd binnen een opgeslagen procedure of trigger, SYSDATE() geeft de tijd terug dat het wordt uitgevoerd, terwijl NOW() geeft de tijd terug waarop de opgeslagen procedure of trigger is gestart.

Voorbeeld

Laten we eerst eens kijken hoe deze twee functies verschillende resultaten kunnen opleveren.

SELECT 
    NOW(),
    SYSDATE(),
    SLEEP(5),
    NOW(),
    SYSDATE();

Resultaat (met verticale uitvoer):

    NOW(): 2021-05-27 09:22:08
SYSDATE(): 2021-05-27 09:22:08
 SLEEP(5): 0
    NOW(): 2021-05-27 09:22:08
SYSDATE(): 2021-05-27 09:22:13

Hier gebruikten we de SLEEP() functie om de verwerking vijf seconden te pauzeren vóór de tweede reeks functieaanroepen.

We kunnen zien dat de tweede keer SYSDATE() werd aangeroepen, was de geretourneerde waarde anders dan de eerste keer. NOW() aan de andere kant, gaf beide keren dezelfde waarde terug.

Andere overwegingen

Er zijn een paar andere dingen waar u op moet letten bij deze twee functies:

  • SET TIMESTAMP heeft geen invloed op SYSDATE() , terwijl het doet invloed op de NOW() functie.
  • SYSDATE() is onveilig voor replicatie als binaire logboekregistratie op basis van instructies wordt gebruikt. Er zijn echter manieren om hiermee om te gaan, indien nodig. U kunt --sysdate-is-now . gebruiken commando is een niet-standaard optie voor alias SYSDATE() naar NOW() om het veilig te maken voor replicatie. Zie de MariaDB-documentatie voor SYSDATE() voor meer informatie.

  1. Welke methoden kunnen worden gebruikt om verschillende versies van reeds bestaande databases te beheren?

  2. Snelste manier om geneste bulk-inserts uit te voeren met scope_identity() gebruik?

  3. Waarom ondersteunt MySQL geen milliseconde / microseconde precisie?

  4. Waarom zijn logische leesbewerkingen voor geaggregeerde vensterfuncties zo hoog?