crocodudule Posted September 27, 2009 Share Posted September 27, 2009 Salut tout le monde, j'espère que cette nouvelle question aura autant de succès que ma question précédente. Plus sérieusement, j'utilisais peu jusque là la gestion de la date et de l'heure, souvent la dernière entrée saisie était la plus récente et du coup permettait d'ordonner chronologiquement les infos. de la db. Mais là j'ai besoin de travailler sur les dates et l'heure plus précisément. Aussi ma question est toute simple, il va me falloir intercepter dans la db tous les événements concernant un mois donné. - Pour cela j'ai deux solutions: . Faire filtrer mes entrées avec un DATETIME par mysql (donc dans la requête elle même adressée à mysql) ou . Utiliser un champ TIMESTAMP dans la db (ce qui en terme de requête est simple: je demande à mysql les TIMESTAMP compris entre deux TIMESTAMP de référence) et je ne fais que reformater mes dates avec php pour les afficher. J'ai une petite préférence pour la 2° solution car elle me semble plus simple à manipuler (je sens que la requête mysql de la première solution risque d'être une source d'erreur pénible en raison du caractère non intuitif du formatage de la demande). Mais je me demande surtout ce qui est le moins gourmand en ressources puisque le nombre d'entrées à vérifier risque d'être important. Est-ce que quelqu'un a déjà une expérience sur le sujet pour valider l'une ou l'autre des solutions? Merci Link to comment Share on other sites More sharing options...
Shtong Posted September 27, 2009 Share Posted September 27, 2009 DATETIME permet de plus grandes plages de valeurs (TIMESTAMP permet des valeurs entre 1970 et 2038, ce qui est de toute façon suffisant dans la plupart des cas...) DATETIME prends deux fois plus de place en mémoire (8 octets contre 4 octets pour TIMESTAMP) DATETIME est globalement plus rapide que TIMESTAMP pour le traitement de données selon certaines sources Il n'y a pas vraiment de différence au niveau de l'utilisation des deux types, ils peuvent être manipulés de la même manière et les fonctions date marchent de la même manière sur les deux. Donc je pencherais plutôt pour DATETIME Link to comment Share on other sites More sharing options...
crocodudule Posted September 27, 2009 Author Share Posted September 27, 2009 Très intéressant ton lien, merci beaucoup. On peut remarquer que la différence doit être le plus souvent négligeable mais peut devenir sensible pour de lourds et nombreux traitements sur la date. Fait étonnant, du moins jusqu'à ce que je lise le texte, l'INT est plus rapide s'il est directement "donné à traité" à mysql. En pratique, c'est souvent le cas, enfin dans mon esprit, on va définir la date qui nous intéresse à l'aide de php : l'utilisateur va sélectionner sur sa page une date dans un calendrier, valider et, dans le formulaire, est calculé la date ou le TIMESTAMP, la valeur étant alors intégrée dans la requête mysql. Du coup, je n'avais pas envisagé cette solution la pensant pas très clean, mais si l'on en croit ton lien c'est la requête la plus rapidement traitée (INT 2s, DATETIME 4s, TIMESTAMP 10s) et dont la forme de stockage est la plus faible. Finalement, le choix doit être adapté à la façon dont on va travailler sur les dates, si le travail doit être assuré par mysql lui même, c'est DATETIME, en revanche si les calculs sont fait avec php, mysql ne faisant que retourner les évènements par rapport à une valeur INT (fréquemment le cas je pense) on a tout intérêt à travailler sur un TIMESTAMP donné par php et stocké comme un INT dans la db. Merci encore Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.