Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Timestamp com precisão de milissegundos:como salvá-los no MySQL


Você precisa estar no MySQL versão 5.6.4 ou posterior para declarar colunas com tipos de dados de tempo fracionários. Não tem certeza se você tem a versão correta? Tente SELECT NOW(3) . Se você receber um erro, você não tem a versão correta.

Por exemplo, DATETIME(3) lhe dará resolução de milissegundos em seus timestamps e TIMESTAMP(6) fornecerá resolução de microssegundos em um timestamp estilo *nix.

Leia isto:https://dev.mysql.com/ doc/refman/8.0/en/fractional-seconds.html

NOW(3) lhe dará a hora atual do sistema operacional do seu servidor MySQL com precisão de milissegundos.

Se você tiver um número de milissegundos desde a época Unix , tente isso para obter um valor DATETIME(3)
FROM_UNIXTIME(ms * 0.001)

Timestamps JavaScript , por exemplo, são representados em milissegundos desde a Unix epoch .

(Observe que a aritmética fracionária interna do MySQL, como * 0.001 , é sempre tratado como ponto flutuante de precisão dupla IEEE754, então é improvável que você perca a precisão antes que o Sol se torne uma estrela anã branca.)

Se você estiver usando uma versão mais antiga do MySQL e precisar de precisão de tempo de subsegundos, seu melhor caminho é atualizar. Qualquer outra coisa o forçará a fazer soluções alternativas confusas.

Se, por algum motivo, você não puder atualizar, considere usar BIGINT ou DOUBLE colunas para armazenar carimbos de data e hora Javascript como se fossem números. FROM_UNIXTIME(col * 0.001) ainda vai funcionar bem. Se você precisar armazenar a hora atual em tal coluna, poderá usar UNIX_TIMESTAMP() * 1000