MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Diferença entre SYSDATE() e NOW() no MariaDB


No MariaDB, o SYSDATE() e NOW() as funções são semelhantes, pois retornam a data e a hora atuais.

No entanto, há uma diferença importante:SYSDATE() retorna o tempo de execução, enquanto NOW() retorna a hora em que a instrução começou a ser executada.

E quando executado dentro de um procedimento armazenado ou gatilho, SYSDATE() retornará a hora de execução, enquanto NOW() retornará a hora em que o procedimento armazenado ou gatilho começou a ser executado.

Exemplo


Primeiro, vamos ver como essas duas funções podem produzir resultados diferentes.
SELECT 
    NOW(),
    SYSDATE(),
    SLEEP(5),
    NOW(),
    SYSDATE();

Resultado (usando saída vertical):
    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

Aqui, usamos o SLEEP() função para pausar o processamento por cinco segundos antes do segundo lote de chamadas de função.

Podemos ver que na segunda vez SYSDATE() foi invocado, seu valor de retorno foi diferente da primeira vez. NOW() por outro lado, retornou o mesmo valor nas duas vezes.

Outras Considerações


Há algumas outras coisas a serem observadas com essas duas funções:
  • SET TIMESTAMP não afeta SYSDATE() , enquanto faz afetar o NOW() função.
  • SYSDATE() não é seguro para replicação se o log binário baseado em instrução for usado. No entanto, existem maneiras de lidar com isso, se necessário. Você pode usar --sysdate-is-now command é uma opção não padrão para alias SYSDATE() para NOW() para torná-lo seguro para replicação. Veja a documentação do MariaDB para SYSDATE() para mais informações.