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

Quand avons-nous choisi DateTime plutôt que Timestamp

Comme dit dans un commentaire, je pense que cela est principalement dû à des préférences personnelles. À mes yeux, l'utilisation d'un horodatage Unix et d'interfaces non OOP "héritées" n'est pas la façon de le faire à l'avenir dans le monde d'aujourd'hui, par exemple, nous n'utilisons pas (lire :ne devrait pas) utiliser un INT datatype dans notre base de données pour stocker les dates au format Unix Timestamp, nous devrions plutôt utiliser le type natif de la base de données qui est généralement un DATE ou DATETIME type qui coopère avec le DateTime de PHP objet (et d'autres langages) presque nativement lorsqu'il s'agit de conversions standard.

Pour développer un peu ce que j'entends par conversions standard :lorsque vous utilisez MySQL et que vous récupérez une valeur vers PHP, vous obtenez une chaîne de date au format ISO, dont le DateTime la classe analyse son constructeur en vous donnant un objet immédiatement utilisable. En revanche, pour suivre la route d'horodatage Unix, vous devez utiliser strtotime , puis date pour l'obtenir dans n'importe quel format que vous voulez nativement.

J'ai déjà mentionné l'interopérabilité entre nos systèmes PHP et les systèmes .NET. Bien qu'il n'y ait pas de problèmes spécifiques causés par l'utilisation d'un horodatage, ce n'est tout simplement pas la solution pratique, car encore une fois, nous utilisons une base de données qui renvoie une valeur DateTime qui peut être envoyée directement dans le tuyau. Si nous devions le convertir en un horodatage unix pour une utilisation interne dans PHP, nous devions également le reconvertir si nous devions envoyer une réponse ou envoyer une réponse à l'application .NET (ou devrais-je simplement dire API dans ce cas) qui est un horodatage, et le convertir à la fin. En utilisant DateTime à tous les niveaux, cela réduit le besoin de toute conversion et l'ensemble du processus de développement est plus facile.

Enfin, pour ajouter à tout cela, comme vous l'avez également mentionné dans votre message, vous pouvez utiliser des éléments brillants tels que DateInterval , un fuseau horaire plus facile, une manipulation plus facile et un formatage plus facile, etc. lorsque vous utilisez DateTime et ses partenaires liés à l'objet dans le crime. C'est juste un processus de développement plus facile à mes yeux.

Je ne crois pas, comme je l'ai dit au départ, qu'il y ait une "bonne" réponse à cela, juste plus une préférence personnelle basée sur votre propre style de codage, et les commentaires ci-dessus reflètent le mien.

  • Je ne le crois en aucune façon. Surtout avec les scripts PHP qui sont généralement des processus d'exécution aussi courts de toute façon.

Oui :)

Voir les commentaires ci-dessus sur la base de données, il n'est pas "natif" d'utiliser un horodatage Unix à cette fin IMO. Vous pouvez simplement appeler ->getTimezone et stockez-le dans la base de données, puis utilisez ->setTimezone lorsque vous le retirez à nouveau.