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

Langage SQL Discussion :

Concaténation de Date


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Concaténation de Date
    Bonjour,

    Voici mon problème!!

    Je veux transformer cette règle en SQL Téradata

    Règle :

    Il s’agit de la date dont :
    • mois et année sont égaux à Madate1 moins 1 mois
    • jour est égal au jour_Fact + 1 jour
    Exemple jour_fact = 17 ; Madate1= 200702 => Date_FIN= 20061218
    Date_FIN est ma date finale à récupérer.

    Donc il me faut extraire mois et année du champ Madate1 dans ma table T1 et par la suite concaténer avec le jour_Fact que j'aurai récupérer dans une autre table T1.

    Voici le sql que j'ai écrit:

    CAST(Extract ( Year FROM ADD_MONTHS (T1.Madate1, -1)) AS INTERVAL YEAR(4)) + CAST(Extract ( Month FROM ADD_MONTHS (T1.Madate1, -1)) AS interval month(2)) + CAST (T2.jour_fact + 1 AS INTERVAL DAY(2) )

    Le problème se trouve dans la concaténation du niveau jour_Fact.
    sachant que le champ jour_fact est numérique dans la table T2.
    Merci d'avance

    Fola

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 102
    Points : 28 384
    Points
    28 384
    Par défaut
    En SQL Teradata, je ferais comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ADD_MONTHS(((T1.Madate1 - EXTRACT(DAY FROM T1.Madate1) + T2.jour_fact + 1) (DATE)), -1)

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Merci pour ta réponse!
    je viens de le tester, ça à l'air de marcher, seulement que le mois de février n'est pas géré!
    Exple: si le jour_fact est 29 et que madate1= 2006-02-01 j'obtient une date = 2006-02-01 ce qui n'est pas normal, car je devrais avoir 2006-01-30.

    Voilà la solution que j'ai trouvé en fin de compte et qui a marché:

    CAST(SUBSTRING(CAST(ADD_MONTHS(T1.madate, -1) AS CHAR(10) ) FROM 1 FOR 8 ) !! '01' AS date FORMAT 'YYYY-MM-DD') + CAST (T2.jour_fact AS INTERVAL DAY(2) ).

    folako

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 102
    Points : 28 384
    Points
    28 384
    Par défaut
    Ta solution est équivalente à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ADD_MONTHS(T1.Madate1 - EXTRACT(DAY FROM T1.Madate1) + 1, -1) + T2.jour_fact
    A toi de voir laquelle est la plus efficace...

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    effectivement ça marche!!

    Merci

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

Discussions similaires

  1. Concaténation de dates
    Par milka dans le forum SQL
    Réponses: 14
    Dernier message: 03/02/2012, 11h19
  2. Concaténer 2 dates
    Par Mister Nono dans le forum Langage
    Réponses: 3
    Dernier message: 20/09/2007, 12h21
  3. Concaténation des dates
    Par ouadii dans le forum Excel
    Réponses: 1
    Dernier message: 19/09/2007, 10h51
  4. Concaténation de dates
    Par karidrou dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 04/09/2007, 16h05
  5. Réponses: 1
    Dernier message: 06/05/2007, 11h56

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