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

PostgreSQL Discussion :

comparaison de date


Sujet :

PostgreSQL

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    677
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 677
    Points : 160
    Points
    160
    Par défaut comparaison de date
    Bonjour,

    J'ai un problème et malgré des recherches sur le net je tourne en rond.

    Je dois comparer deux dates avec celle renvoyée par l'instruction SELECT CURRENT_DATE qui me renvoie la date au format '23/09/2006' mais l'une des deux dates à comparer est au format '23/09/2006 10:23:57'

    J'essaie donc d'adapter cette date pour ne récuper dans ma requete sql que le jour/mois/année mais je ne trouve pas de fonctions adéquats.

    Merci pour votre aide.

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 476
    Points : 831
    Points
    831
    Par défaut
    bonjour tu peux essayer la fonction date_trunc()

    date_trunc('day', timestamp '23/09/2006 10:23:57')
    donne une precision au jour donc tu pourra la comparer avec la date '23/09/2006'

  3. #3
    Membre éclairé Avatar de Spoutnik
    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 672
    Points : 781
    Points
    781
    Par défaut
    Hello,

    CURRENT_DATE renvoit un résultat de type 'DATE', alors que '23/09/2006 10:23:57' est de type 'timestamp'. Il faut que tu caste un type vers l'autre.
    Soit tu utilises CURRENT_TIMESTAMP (équivalent à now() ), soit tu cast '23/09/2006 10:23:57' en DATE (à vérifier, mais '23/09/2006 10:23:57'::date devrait marcher)

    ++
    Two beer or not two beer. (Shakesbeer)
    Question technique par MP => poubelle!

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    677
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 677
    Points : 160
    Points
    160
    Par défaut
    Merci !

    Effectivement '23/09/2006 10:23:57'::date donne '23/09/2006'

    merci pour vos réponses...

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    677
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 677
    Points : 160
    Points
    160
    Par défaut
    mais comment puis-je ne récupérer que le jour et le mois dans la date afin de mettre à jour des ages ?

    merci

  6. #6
    Membre éclairé Avatar de Spoutnik
    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 672
    Points : 781
    Points
    781
    Par défaut
    Hello,

    Pour récupérer le jour, utilises

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    date_part('day',timestamp '23/09/2006 10:23:57')
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    extract('day' from timestamp '23/09/2006 10:23:57')

    Pour le détails de toutes les fonctions sur les dates/timestamp regarde cette page :
    Operations sur les dates

    ++
    Two beer or not two beer. (Shakesbeer)
    Question technique par MP => poubelle!

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    677
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 677
    Points : 160
    Points
    160
    Par défaut
    Oui tu vas récupérer le jour mais moi j'ai besoin de comparer le jour et le mois dans deux dates afin de mettre à jour une colonne age. Je dois en fait vérifier la date de leur anniversaire et incrémenter leur age.

  8. #8
    Membre éclairé Avatar de Spoutnik
    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 672
    Points : 781
    Points
    781
    Par défaut
    la fonction age(timestamp, timestamp) ?
    ou pour avoir l'age en année :

    extract ('year' from age('date à comparer'::timestamp, 'date naissance' :: timestamp))
    Two beer or not two beer. (Shakesbeer)
    Question technique par MP => poubelle!

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    677
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 677
    Points : 160
    Points
    160
    Par défaut
    Oui je suis d'accord mais il faut bien sélectionnner les personnes dont c'est l'anniversaire aujourd'hui. Je ne vais pas faire une mise à jour pour tout le monde donc il ma faut sélectionner les membres dont l'anniversaire est aujourd'hui et cela se fait avec le jour et le mois de leur date de naissance

  10. #10
    Membre éclairé Avatar de Spoutnik
    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 672
    Points : 781
    Points
    781
    Par défaut
    pas forcément. Si tu veux sélectionner les personnes dont c'est l'anniversaire aujourdh'ui, tu peux utiliser ceci par exemple :
    SELECT *
    FROM personne
    WHERE age('date naissance'::timestamp) = date_truc('year' age('date naissance'::timestamp))
    si l'arrondi vaut la même chose que la valeur exacte d'écart, c'est que c'est la date anniversaire!
    Two beer or not two beer. (Shakesbeer)
    Question technique par MP => poubelle!

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    677
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 677
    Points : 160
    Points
    160
    Par défaut
    Merci et bravo !

  12. #12
    Membre éclairé Avatar de Spoutnik
    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 672
    Points : 781
    Points
    781
    Par défaut
    De rien!
    un petit et ce sera parfait
    Two beer or not two beer. (Shakesbeer)
    Question technique par MP => poubelle!

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

Discussions similaires

  1. comparaison de dates javascript
    Par SpaceFrog dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/07/2005, 08h45
  2. comparaison de dates
    Par pmithrandir dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/06/2005, 16h12
  3. comparaison de date
    Par nickoshiba dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 15/03/2005, 15h48
  4. Comparaison de dates
    Par Tapioca dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/06/2004, 15h55
  5. Problème de comparaison de dates
    Par MiJack dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/03/2004, 21h43

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