Eu encontrei uma consulta semelhante a
INSERT INTO mytable (id, Created, Updated) VALUES (null, NOW(), NOW())
tendo definições de coluna
| Created | datetime |
| Updated | datetime |
Neste caso, o MySQL definirá o valor NOW() para a hora atual e retornará os mesmos valores para ambas as chamadas, ou essa consulta correrá o risco (improvável) de ter dois horários ligeiramente diferentes para Created e Updated?
Observação : não consigo alterar os tipos de campo.
A hora retornada por
NOW()
e outras funções de data e hora são derivadas da hora de início da consulta. ATHD
classe aqui é usada para conter todas as informações para a conexão. A implementaçãoNOW()
da função pega esse valor e o retorna na estrutura.now_time
Os documentos do
NOW()
MySQL também indicam:Você sempre obterá o mesmo
NOW()
valor de qualquer lugar na consulta.Vale a pena notar que isso não é por transação:
Outro aspecto:
SYSDATE()
pode ser diferente, masNOW()
não pode.Estou usando
(6)
para que possamos ver o tempo até o microssegundo. Observe como asNOW
chamadas são idênticas e os menores valores. Enquanto isso, asSYSDATE
ligações são posteriores e não são iguais umas às outras.----- 31-03-2006 5.0.20 e ainda não lançado 5.1.8 -- Funcionalidade adicionada ou alterada -- -----
Adicionada a opção --sysdate-is-now ao mysqld para permitir que SYSDATE() seja tratado como um alias para NOW() . Consulte Funções de data e hora . (Erro #15101)
----- 2005-09-22 5.0.13 Release Candidate -- Bugs corrigidos -- -----
A função SYSDATE() agora retorna a hora em que foi chamada. Em particular, dentro de uma rotina ou gatilho armazenado, SYSDATE() retorna a hora em que é executada, não a hora em que a rotina armazenada ou a instrução de gatilho começou a ser executada. (Erro #12480)
Não achei a resposta do @nbk satisfatória o suficiente para minhas necessidades (especialmente "Não, desde que você não tenha micro segundos em seu datetime e um servidor realmente muito lento, pode ser possível").
Então simulei uma espécie de servidor muito lento.
Meu desktop Linux MB tem 6 núcleos, eu fiz esse programa em C
e no principal
Isso torna n threads muito ocupados. Com n = 10, a área de trabalho estava muito ocupada...
Enquanto isso estava sendo executado (como root , para garantir que o sistema não tente salvar alguns recursos para si mesmo :) Eu preparei isso antes
e um arquivo de 1000 linhas
Então, quando o PC estava executando 10 threads busy() em 6 núcleos [todos estavam em 100%], eu injetei as 1000 inserções na tabela, demorei um pouco mais que o normal, então
Sim! MySQL é muito bem feito! (sério, sempre me surpreendo com a qualidade dos algoritmos e programação do sistema por trás desse SGBD).
Não, não haverá diferença
como MysQL escreve no manual
Este parece ser um comportamento diferente de todas as outras funções, que são executadas coluna por coluna.
db<>fique aqui