Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment stocker la date en milliseconde unix dans Mysql?

Ne le faites pas. DateTime les valeurs doivent être stockées en tant que DateTime , sauf si vous avez une très bonne raison de les stocker autrement (comme pour prendre en charge les valeurs de date et d'heure en dehors des valeurs min/max de DateTime ), je suggérerais de le laisser dans un DateTime colonne.

Vous pouvez toujours manipuler la façon dont vous les renvoyez de la base de données pendant Select ou dans la couche de présentation. Pour renvoyer l'heure unix à partir de DateTime , MySql fournit une méthode intégrée appelée UNIX_TIMESTAMP . Pour renvoyer le nombre de millisecondes, multipliez simplement par 1000, puisque l'horodatage unix est le nombre de secondes depuis le 1er janvier 1970 (sans compter les secondes intercalaires). Si vous souhaitez stocker l'heure unix, vous devrez utiliser un type de données int.

Veuillez noter que si vous stockez l'heure unix au lieu de stocker le DateTime réel valeur dans un DateTime colonne de type de données, vous perdrez la possibilité d'utiliser facilement toutes les fonctions datetime intégrées à la base de données. Par exemple, si vous voulez savoir combien de lignes appartiennent à un mois spécifique, vous devrez d'abord traduire les données de int en datetime, et ce n'est qu'alors que vous pourrez calculer cela.

Vous perdrez également en précision (puisque l'heure unix est inexacte même sur la résolution de 1 seconde, car elle ignore les secondes intercalaires).

Donc, pour conclure - Lorsque la base de données vous propose un type de données qui correspond aux données, n'allez pas stocker ces données en utilisant un type de données différent. utilisez le Date type de données si vous ne souhaitez stocker que des dates, le DateTime type de données si vous souhaitez stocker des valeurs datetime et le Time type de données si vous souhaitez stocker une heure spécifique dans la journée.

P.S.
Lorsque vous traitez avec des valeurs de date et d'heure, en particulier si vous devez traiter avec des clients de plusieurs emplacements, stockez TOUJOURS uniquement les dates et heures UTC dans votre base de données, sauf si, bien sûr, vous voulez devenir fou.