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 :

SQL et date de paiement


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Pgs
    Pgs est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Par défaut SQL et date de paiement
    Bonjour,

    Ma question concerne une table contenant une liste d'achats. Je voudrais, en fonction de la date d'achat, et en fonction d'un code "délai de règlement" (par exemple "30 jours fin de mois", ou bien "premier jour du trimestre suivant" etc.), calculer - dans ma requete SQL - la date de paiement applicable.

    Plutôt que de réinventer la poudre, si vous avez des exemples de calcul, en SQL, de dates de règlement, je suis archi preneur.

    Bonne journée.

    Philippe

  2. #2
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    433
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 433
    Par défaut
    Alors, valable en MySQL : DATE_ADD, exemple, ajouter 31 jours :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DATE_ADD ('1998-01-02', 31)
    Valable en SQL Server : DATEADD, exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DATEADD ("m", 31, '1998-01-02')
    Résultat :

  3. #3
    Membre émérite Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008

  4. #4
    Pgs
    Pgs est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Par défaut
    Merci.

    Mais alors, comment feriez vous dans les deux cas suivants (en mysql) :

    A) pour déterminer, par rapport à ma date courante, la date de fin de mois

    La seule solution à laquelle je pense est :
    1) avec un makedate, créer la date de début de mois,
    2) comme le nombre de jours du mois n'est pas toujours le même, rajouter un mois, puis en enlever un jour, à ma date de début de mois pour obtenir ma date de fin de mois.
    Me trompe-je ? Y a t'il plus malin ?

    B) comment faire pour connaitre le premier jour du trimestre suivant ?

    Si ça vous parle, merci pour vos lumières.


    Philippe

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    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 136
    Par défaut
    En SQL normalisé :
    Début de mois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (madate - (EXTRACT(DAY FROM madate) - 1))
    Fin du mois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (debutmois + CAST(1 AS INTERVAL MONTH)) - 1
    Premier jour du trimestre suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    debutmois 
    + CAST((CASE MOD(EXTRACT(MONTH FROM madate), 3) 
                WHEN 0 THEN 1 
                WHEN 1 THEN 3 
                WHEN 2 THEN 2 
            END) AS INTERVAL MONTH)
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  6. #6
    Pgs
    Pgs est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Par défaut
    Merci beaucoup

    Juste une question : dans l'expression (debutmois + CAST(1 AS INTERVAL MONTH)) - 1, comment le moteur fait-il pour interpréter le 1 comme un jour et non comme une unité de base de temps ?

    Philippe

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

Discussions similaires

  1. Sql + Access + Date + Performance
    Par kurkaine dans le forum C++Builder
    Réponses: 1
    Dernier message: 22/12/2005, 22h34
  2. SQL/VBA Date Format
    Par LeScandinave dans le forum Access
    Réponses: 20
    Dernier message: 05/10/2005, 08h34
  3. PL/SQL TROUVER DATES DE PÂQUES, ASCENSION et PENTECôTE
    Par mimi_été dans le forum PL/SQL
    Réponses: 4
    Dernier message: 21/10/2004, 15h40
  4. Instruction SQL et Date
    Par Didier100 dans le forum Bases de données
    Réponses: 11
    Dernier message: 19/07/2004, 18h20
  5. [VB.NET] Requete sql et date
    Par mic56 dans le forum Accès aux données
    Réponses: 11
    Dernier message: 03/06/2004, 10h39

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