6
votes

Quelles sont les bonnes raisons de choisir l'horodatage sur des colonnes DateTime dans MySQL?

Disclaimer: cela pourrait être un duplicata de DateTime vs horodatage? , mais je sens que je suis pas convaincu des réponses:

Ma question est:

Quelles sont les bonnes raisons de choisir l'horodatage sur des colonnes DateTime dans MySQL?

Je suis à peu près sûr que je ne sais pas tout ce qu'il y a sur les différences entre ces deux, je vais donc essayer de répertorier les principaux avantages de DateTime ( dt ) par rapport à Timeestamp ( TS ) à ma connaissance:

  • dt est lisible humain ( tts n'est pas sans utiliser to_date )
  • dt a une période de temps positive de 8999 ans ( 1000-01-01 00:00:00 à 9999-12-31 23:59:59 )
    ( TS seulement environ 68 ans, 1970-01-01 à 2038-01-19 )
  • dt Les champs semblent mieux performer (selon Ce blog post )
  • dt peut être utilisé pour le calcul de la date avancée ( Sélectionnez maintenant () + Intervalle 2 jour )

    et vice versa:

    • TS nécessite seulement 4 octets ( dt utilise 8)
    • TS sont stockés en tant que valeurs UTC et modifiées en fonction du réglage du fuseau horaire du client
    • TS Les colonnes peuvent servir de "journal" pour la surveillance lorsqu'une ligne a changé

      La seule raison pour laquelle je vois pour l'utiliser puisse être la surveillance de la ligne, mais en regardant la gamme de horodatage , qui finira par "seulement" 28 ans *, je préférerais aller avec un Insérer ou mettre à jour la gâchette.

      Alors, qu'est-ce que je manque? Je ne vois toujours pas de vraiment bon raison de choisir l'horodatage à n'importe quel but?

      * Je sais, cela semble assez longtemps, mais dans les années 60, certains ingénieurs ont également décidé de raser 2 octets de l'année, car leurs systèmes informatiques ne seront jamais L'année 2000 .....


0 commentaires

3 Réponses :


3
votes

Les colonnes DT peuvent également servir de "journal" pour surveiller lorsqu'une ligne change, je les utilise et les déclencheurs pour le faire.

J'utilise habituellement l'horodatage lorsque vous travaillez avec beaucoup de choses PHP pour réduire trop de jour l'analyse de la date. Si le besoin se pose jamais, je peux mettre à jour mon logiciel pour utiliser DateTime.


0 commentaires

1
votes

Voici un aspect amusant de DT que j'ai déjà utilisé: Utilisation du DT - au moins dans MySQL - vous avez la possibilité de partir soit l'année à "0000", et / ou les deux mois et jour: "00-00". Ceci est pratique pour stocker des dates d'anniversaire sans nécessiter des informations complètes!


1 commentaires

Vrai; Cependant, il est de moins que pratique si vous devez copier / migrer des données sur un DBMS différent nécessitant des champs de date pour contenir des dates (réelles). Été là, fait ça ...



2
votes

La principale question est la suivante: quel est le but du champ DAYTIME / TIMESTAMP? S'il ne s'agit que d'un horodatage comme dans un fichier journal où vous ne stockez que le temps réel, le chronomètre est le meilleur choix. Parce qu'il n'a besoin que de 4 octets et nous sommes dans la portée de ce que l'horodatage peut le couvrir. S'il s'agit d'une date comme date de naissance, la datetime est le bon choix. Nous espérons que nous aurons une solution avant la fin de la portée de l'horodatage. ;) (Désolé pour mon anglais).


2 commentaires

Je suis d'accord avec le stockage requis, mais le gain de vitesse lors de l'utilisation de DateTime semble l'emporter sur ceci, en particulier lorsque vous recherchez un événement à une date précise.


Nous espérons que nous aurons une solution avant la fin de la portée de l'horodatage . Je suppose que nous aurons un joli média vers la mi-janvier 2038 :-).