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

Forskellen mellem SYSDATE() og NOW() i MariaDB

I MariaDB er SYSDATE() og NOW() funktioner ligner hinanden ved, at de returnerer den aktuelle dato og klokkeslæt.

Der er dog en vigtig forskel:SYSDATE() returnerer den tid, den udfører, mens NOW() returnerer det tidspunkt, hvor sætningen begyndte at udføre.

Og når den køres inden for en lagret procedure eller trigger, SYSDATE() returnerer den tid, den udfører, mens NOW() returnerer det tidspunkt, hvor den lagrede procedure eller trigger begyndte at udføre.

Eksempel

Lad os først se på, hvordan disse to funktioner kan give forskellige resultater.

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

Resultat (ved hjælp af lodret output):

    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

Her brugte vi SLEEP() funktion for at sætte behandlingen på pause i fem sekunder før den anden masse funktionskald.

Det kan vi se anden gang SYSDATE() blev påberåbt, var dens returværdi anderledes end første gang. NOW() på den anden side returnerede den samme værdi begge gange.

Andre overvejelser

Der er et par andre ting, du skal være opmærksom på med disse to funktioner:

  • SET TIMESTAMP påvirker ikke SYSDATE() , hvorimod den gør påvirke NOW() fungere.
  • SYSDATE() er usikker til replikering, hvis der bruges sætningsbaseret binær logning. Der er dog måder at håndtere dette på, hvis det er nødvendigt. Du kan bruge --sysdate-is-now kommandoen er en ikke-standardindstilling til alias SYSDATE() til NOW() for at gøre det sikkert til replikering. Se MariaDB-dokumentationen for SYSDATE() for mere information.

  1. postgres - hvor i (liste) - kolonne eksisterer ikke

  2. Sådan gemmer du array eller flere værdier i en kolonne

  3. ORA-12516, TNS:listener kunne ikke finde tilgængelig handler

  4. Installation af WordPress 5 på ZEIT nu med MySQL Hosting