IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[SQL] un champ Timestamp ou deux champs Date et Heure?


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 19
    Points : 15
    Points
    15
    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?

  2. #2
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    c'est plutôt un problème sql...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM Article WHERE article_time LIKE '2004-12%'
    enfin, tout dépend du format...
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  3. #3
    Membre habitué Avatar de ..:: Atchoum ::..
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 159
    Points : 156
    Points
    156
    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

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    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) ?

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 19
    Points : 15
    Points
    15
    Par défaut
    c'est bien un int(10) dans ma bdd

  6. #6
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    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.

  7. #7
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  8. #8
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    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

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 19
    Points : 15
    Points
    15
    Par défaut
    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

  10. #10
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    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 ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2012] SQL consolider des valeurs dans deux champs
    Par philreut dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 28/11/2013, 10h58
  2. Comment remplacer la date d'un champ timestamp par une autre date ?
    Par clavier12AZQSWX dans le forum Requêtes
    Réponses: 3
    Dernier message: 13/12/2011, 17h27
  3. [AC-2003] requete trie entre deux champs et un intervalle de dates
    Par papou23 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 10/01/2011, 15h39
  4. [SQL] ordonner une requête avec deux champs
    Par The Free Man dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 01/08/2008, 16h05
  5. Réponses: 4
    Dernier message: 11/06/2008, 09h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo