Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/02/2006, 13h56   #1
Invité régulier
 
Inscription : avril 2004
Messages : 19
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 19
Points : 6
Points : 6
Par défaut [SQL] un champ Timestamp ou deux champs Date et Heure?

J'ai une table Article où je stocke la date de chaque article (champ article_time) avec un timestamp.

Je voudrais sur un site afficher tous les articles d'un mois et d'une année donnée (ex: les articles de Fevrier 2006). Avec un timestamp, je ne vois pas comment m'y prendre.

Le mieux est-il d'avoir deux champs Date et Heure?
davmaster62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2006, 14h00   #2
Rédacteur/Modérateur
 
Avatar de gorgonite
 
Homme Nicolas Vallée
Ingénieur Système
Inscription : décembre 2005
Messages : 9 771
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Vallée
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Ingénieur Système
Secteur : Transports

Informations forums :
Inscription : décembre 2005
Messages : 9 771
Points : 14 296
Points : 14 296
c'est plutôt un problème sql...

Code :
SELECT * FROM Article WHERE article_time LIKE '2004-12%'
enfin, tout dépend du format...
gorgonite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2006, 14h15   #3
Membre habitué
 
Avatar de ..:: Atchoum ::..
 
Inscription : avril 2003
Messages : 159
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : avril 2003
Messages : 159
Points : 130
Points : 130
Envoyer un message via ICQ à ..:: Atchoum ::.. Envoyer un message via MSN à ..:: Atchoum ::.. Envoyer un message via Skype™ à ..:: Atchoum ::..
Par défaut Re: un champ Timestamp ou deux champs Date et Heure?

Citation:
Envoyé par davmaster62
Le mieux est-il d'avoir deux champs Date et Heure?
Et pourquoi pas un champs datetime ? Et c'est exact c'est juste un problème de requete
__________________
On ne peut empêcher les vagues, mais on peut apprendre à les surfer...
http://blog.plopix.net
http://www.ez-france.org
..:: Atchoum ::.. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2006, 14h31   #4
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Par défaut Re: un champ Timestamp ou deux champs Date et Heure?

Citation:
Envoyé par ..:: Atchoum ::..
Et pourquoi pas un champs datetime ?
Je ne suis pas d'accord. Son champ timestamp est parfait, il peut calculer exactement ce qu'il veut à partir de là, c'est la manière la plus modulable.

Tu peux par exemple calculer le timestamp de l'année dont tu as besoin (une fourchette : timestamp mini et timestamp maxi) et faire un BETWEEN.
Je parle de timestamp mais dans la BDD, c'est bien un int(10) ?
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2006, 14h40   #5
Invité régulier
 
Inscription : avril 2004
Messages : 19
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 19
Points : 6
Points : 6
c'est bien un int(10) dans ma bdd
davmaster62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2006, 14h46   #6
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Citation:
Envoyé par davmaster62
c'est bien un int(10) dans ma bdd
Ouais, super... On va avancer rapidement, là...
As-tu essayé ce que je t'ai proposé ? Qu'est-ce que cela a donné ?
Si tu veux les articles de février, calcule en PHP le timestamp du 1 février et celui du 1 mars puis fais ta requête sur un BETWEEN de ces deux valeurs.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2006, 14h51   #7
Membre émérite
 
Avatar de macbook
 
Inscription : février 2006
Messages : 840
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 840
Points : 924
Points : 924
Je penche davantage pour un champs au format datetime.
ici on ne demande pas de faire des calculs sur la date mais seulement un select sur des tupples.
Une requête bien formatée peut se prévaloir de ce souhait.

En outre le champs de type timestamp à un gros défaut selon moi, il se mets à jour tout seul dans un update. Ce qui pour conserver la date d'enregistrement d'un article pose problème, à moins de spécifier dans la requête que ce champs doit être égal à lui-même :

Code :
1
2
3
4
UPDATE ma_table SET
var = 'var' ,
date = date
WHERE...
Ce qui ressort de l'absurdité.

Un champs de type timestamp ne devrait être utilisé que pour connaitre la date de la dernière modification d'un tupple, et non pour stocker une date d'enregistrement.

Sinon le language SQL est assez riche de fonction (pour la plupart méconnues) qui permettent de faire des calculs sur les dates directement dans la requête.
__________________
Consultant idéaliste.
macbook est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2006, 15h03   #8
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Citation:
Envoyé par macbook
le champs de type timestamp à un gros défaut selon moi, il se mets à jour tout seul dans un update
: : :

Je n'ai jamais vu de champ qui se mette à jour tout seul dans une table sans que je l'aie voulu.
J'ai peut-être mal compris de quoi tu parles : peux-tu être plus spécifique, s'il-te-plaît ?

Et nous ne parlons pas de champ de type timestamp mais plutôt de variable timestamp enregistrée dans un champ int
Citation:
Envoyé par davmaster62
c'est bien un int(10) dans ma bdd
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2006, 15h21   #9
Invité régulier
 
Inscription : avril 2004
Messages : 19
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 19
Points : 6
Points : 6
J'ai essayé la solution avec un BETWEEN entre le 1er du mois et le 1er du mois suivant, ca marche bien. Merci de votre aide
davmaster62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2006, 23h04   #10
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Euh, fais juste attention à un truc que je n'ai pas vérifié en te conseillant le BETWEEN : inclut-il ou bien exclut-il les dates indiquées ?
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h20.


 
 
 
 
Partenaires

Hébergement Web