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

Como armazenar data em milissegundos unix no Mysql?


Não. DateTime os valores devem ser armazenados como DateTime , a menos que você tenha um bom motivo para armazená-los de outra forma (como para dar suporte a valores de data e hora fora dos valores min/max de DateTime ), sugiro deixá-lo em um DateTime coluna.

Você sempre pode manipular como você os retorna do banco de dados durante Select ou na camada de apresentação. Para retornar a hora unix de DateTime , o MySql fornece um método integrado chamado UNIX_TIMESTAMP . Para retornar o número de milissegundos, basta multiplicar por 1000, pois o timestamp unix é o número de segundos desde 1º de janeiro de 1970 (não incluindo os segundos bissextos). Se você quiser armazenar a hora do unix, terá que usar um tipo de dados int.

Observe que, se você armazenar a hora unix em vez de armazenar o DateTime real valor em um DateTime coluna de tipo de dados, você perderá a capacidade de usar facilmente todas as funções de data e hora incorporadas no banco de dados. Por exemplo, se você quiser descobrir quantas linhas pertencem a um mês específico, primeiro terá que traduzir os dados de int para datetime, e só então poderá calcular isso.

Você também perderá a precisão (já que o tempo unix é impreciso mesmo na resolução de 1 segundo, porque ignora os segundos bissextos).

Então, para concluir - Quando o banco de dados oferece um tipo de dados que se encaixa nos dados, não armazene esses dados usando um tipo de dados diferente. use a Date tipo de dados se você deseja armazenar apenas datas, o DateTime tipo de dados se você deseja armazenar valores de data e hora e o Time tipo de dados se desejar armazenar uma hora específica do dia.

P.S.
Ao lidar com valores de data e hora, especialmente se você tiver que lidar com clientes de vários locais, SEMPRE armazene apenas as datas UTC em seu banco de dados, a menos, é claro, que você queira enlouquecer.