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

DB2 Discussion :

Convertir DAYOFYEAR() en date "normale"


Sujet :

DB2

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 42
    Par défaut Convertir DAYOFYEAR() en date "normale"
    Bonjour à tous

    je vous explique mon problème

    je lance un traitement qui dois prendre le quantième et le convertir en date sous la forme AAAAMMJJ

    j'air essayé
    (YEAR(curdate(dayofyear(current DATE)))*1000 +(MONTH(curdate(dayofyear(current DATE))))*100+(DAY(curdate(dayofyear(current DATE)))))

    mais j'ai le message d'erreur me disant que curdate n'est pas défini dans *libl
    quelqu'un a t il une idée pour moi s'il vous plait?

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Par défaut
    Essaie en mettant CURRENT DATE au lieu de curdate.
    Mais, pour obtenir la date du jour, pourquoi ne pas prendre directement CURRENT DATE ?

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    821
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2008
    Messages : 821
    Par défaut
    Citation Envoyé par couf35 Voir le message
    (YEAR(curdate(dayofyear(current DATE)))*1000 +(MONTH(curdate(dayofyear(current DATE))))*100+(DAY(curdate(dayofyear(current DATE)))))
    Sois plus explicite avec un exemple c'est à dire avec la valeur attendue pour une date donnée, car il y a sûrement bien plus simple !

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 42
    Par défaut
    Bonjour Merci déja pour vos réponses ,
    en faite voilà;
    ma requête Original est la suivante

    and date_recep <= (YEAR(curdate(dayofyear(current DATE)))*1000 +(MONTH(curdate(dayofyear(current DATE))))*100+(DAY(curdate(dayofyear(current DATE))))) and date_recep > (YEAR(CURRENT DATE) * 10000 +MONTH(CURRENT DATE) * 100 +DAY(CURRENT DATE )-8)
    tous pourrait se passer dans le meilleur des mondes si lorsque je récupère "DAY(CURRENT DATE )-8)"

    si je suis par exemple le 3 du mois (current date) -8 me retourne pas 30 Janvier mais -3 et day (-3) cela n'existe pas. c'est pour cela que je me suis dis si je récupérait le quantième et que je le convertissait je n'aurais pas ce genre de problème.
    Avez vous une idée ?
    doisje plutot faire day(current date -8) au lieu de day(current date)-8
    Je précise que tous cela m'aide à mettre ma date au format AAAAMMJJ

    Voilà j'espère avoir été plus claire

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    821
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2008
    Messages : 821
    Par défaut
    Pour faire -8 jours tu fais :

    current date - 8 days

    date-recep est un numérique de 8,0 contenant la date ?
    et tu voudrais extraire les enregistrements avec cette date inférieure ou égale à - 8 jours par rapport à la date du jour ?

    Le mieux, créés toi une fonction que tu pourras utiliser tout le temps :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    create function cdate(date8 dec(8)) returns date
    language sql                                              
    deterministic                      
    Disallow Parallel                       
    no external action                                        
    Returns NULL on NULL Input
    return date(insert(insert(date8, 5, 0, '-'), 8, 0, '-'));
    Ainsi ta requête deviendra :

    and cdate(date_recep) <= CURRENT DATE
    and cdate(date_recep) > CURRENT DATE - 8 DAYS

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 42
    Par défaut
    Salut

    Pour faire -8 jours tu fais :

    current date - 8 days
    cela me renvoie des erreurs chez moi
    je fais DAY(CURRENT DATE -15 DAYS
    mais cela le fais grogner

    date-recep est un numérique de 8,0 contenant la date ?
    et tu voudrais extraire les enregistrements avec cette date inférieure ou égale à - 8 jours par rapport à la date du jour ?
    c'est cela date_recep est une date au format AAAAMMJJ

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    821
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2008
    Messages : 821
    Par défaut
    Euhhh, je suis sceptique.

    Essaye

    select current date - 15 DAYS,
    day(current date - 15 DAYS)
    from sysibm/sysdummy1

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

Discussions similaires

  1. Convertir epoch en date "normale"
    Par Earl7 dans le forum Requêtes
    Réponses: 2
    Dernier message: 18/06/2008, 09h52

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