À l'aide de MySQL TIMESTAMP vs stocker les horodatages directement

Je suis dans un dilemme sur l'enregistrement de la date et de l'heure dans MySQL format d'HORODATAGE vs personnalisé dans un UNSIGNED INT format. Les principales considérations sont la vitesse de récupération, de la plage appropriée calculs en PHP et occasionnel de la mise en forme dans, lisible par les valeurs.

L'espace de stockage requis pour chaque type et leurs gammes:

DATETIME        8 bytes  '1000-01-01 00:00:00' to '9999-12-31 23:59:59'
TIMESTAMP       4 bytes  '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC
UNSIGNED INT    4 bytes  (Maximum Value 4294967295)

Je n'ai pas besoin de la gamme de date à tous. Je suis déchiré entre l'HORODATAGE et la UNSIGNED INT.

Arguments en faveur d'un UNSIGNED INT:

  • Un timestamp UNIX de 4294967295 convertit à la Sun, 07 Feb 2106 06:28:15 GMT qui est plus que l'HORODATAGE et assez bon pour moi
  • De la comparaison de ces horodatages directement en PHP serait plus rapide, plutôt que de convertir les Horodatages via la fonction strtotime (), puis en les comparant

Le seul avantage d'HORODATAGE me donnerait, c'est quand je suis en train de lire dans les valeurs de la table mysql manuellement et ont besoin de "voir" leur.

Est-il une raison impérieuse d'utiliser l'HORODATAGE et pas un UNSIGNED INT?

  • Voir: datetime vs timestamp?
  • Un 32bit timestamp ne va pas jusqu'à janvier 2038, et de nombreuses bibliothèques sont encore en utilisant 32 bits time_t lieu de 64 bits, de sorte que vous pouvez courir dans des problèmes de portabilité. En interne, PHP stocke les horodateurs/datetime au format numérique, de toute façon, et convertit uniquement à la belle aaaa-mm-jj type de cordes sur la récupération.
InformationsquelleAutor siliconpi | 2011-08-11