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 :

Dates entièreures ?


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 32
    Points : 29
    Points
    29
    Par défaut [Résolu] Dates entièreures ?
    J'aimerai sélectionner toutes les dates supérieures à :

    - une semaine,
    - deux semaines,
    - un mois,

    Comment faire ?

    J'ai pas mes commandes SQL sous la main. Je sais que ça tourne autout du sysdate :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT date FROM table WHERE date<sysdate

  2. #2
    Nouveau membre du Club
    Inscrit en
    Avril 2002
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 23
    Points : 35
    Points
    35
    Par défaut
    Il faut utiliser sysdate + ou - le nombre de jours.

    ex :
    - sysdate+7 : date de la semaine prochaine,
    - sysdate-7 : date de la semaine dernière

  3. #3
    Membre du Club
    Inscrit en
    Août 2002
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 37
    Points : 41
    Points
    41
    Par défaut
    tu peut aussi utiliser pour les mois add_months(sysdate,n) ou n est un entier qui augmentera sysdate de n nombres de mois .

    Ex :
    Requete exécuté le 22/08/2002
    select add_months(TO_CHAR(sysdate,'dd-mm-yy'),2) from dual;
    -> 22-10-02

    bye

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 32
    Points : 29
    Points
    29
    Par défaut
    D'accord mais pour le mois en cours ??
    Je peux pas faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT TO_CHAR(date_insc, 'DD/MM/YYYY'), no_personnel, email, nom, prenom, statutcv FROM personnel
     WHERE 
    date_insc > (SELECT TO_CHAR(sysdate-30, 'DD/MM/YYYY') FROM dual);
    Il y a pas une méthode ? Pour afficher toutes les dates du mois en cours ??

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 874
    Points : 53 045
    Points
    53 045
    Billets dans le blog
    6
    Par défaut
    Il suffit de modéliser un ensemble de tables temporelles contenant les dates, les jours, les mois... etc comme cela est décrit dans mon bouquin et de faire des jointures sur ces tables.

    Exemple :
    CREATE TABLE T_JOUR
    (J_DATE DATE PRIMARY KEY,
    J_MOIS INT NOT NULL,
    J_ANNEE INT NOT NULL,
    J_JOUR INT NOT NULL)

    INSERT INTO T_JOUR VALUES ('2000-01-01', 1, 2000, 1)
    INSERT INTO T_JOUR VALUES ('2000-01-02', 1, 2000, 2)
    INSERT INTO T_JOUR VALUES ('2000-01-03', 1, 2000, 3)
    ...
    INSERT INTO T_JOUR VALUES ('2100-12-31', 12, 2100, 31)

    Dès lors trouver toute les dates du mois X de la date d :

    SELECT J_DATE
    FROM T_JOUR
    WHERE J_MOIS = EXTRACT(MONTH FROM d)

    le code source de création d'un tel calendrier avec le remplissage des valeurs est dans mon bouquin SQL edition campus press.

    A +

  6. #6
    Nouveau membre du Club
    Inscrit en
    Avril 2002
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 23
    Points : 35
    Points
    35
    Par défaut
    Une requête de ce style peut-être ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT ... FROM ...
    WHERE madate >= to_date('01/'||to_char(sysdate, 'MM/YYYY'), 'DD/MM/YYYY')
    AND madate < to_date('01/'||to_char(sysdate+31, 'MM/YYYY'), 'DD/MM/YYYY');

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 32
    Points : 29
    Points
    29
    Par défaut
    Non ce que tu fais ramènes 31 jours au delà !!
    Et les mois en 29,28,30 t'y pense ?

  8. #8
    Nouveau membre du Club
    Inscrit en
    Avril 2002
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 23
    Points : 35
    Points
    35
    Par défaut
    Exact, essayes plutôt ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT ... FROM ... 
    WHERE madate >= to_date('01/'||to_char(sysdate, 'MM/YYYY'), 'DD/MM/YYYY') 
    AND madate < trunc(last_day(sysdate)+1);

  9. #9
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 874
    Points : 53 045
    Points
    53 045
    Billets dans le blog
    6
    Par défaut
    Vous pouvez toujours essayer de chercher bêtement tout un tas de trucs. Cela ne sert à rien.
    j'ai donné une méthode qui est celle appliquée depuis plus de 20 ans par les professionnels, mais si vous ne voulez pas vous en servir il est inutule de polluer ce forum pas des idioties.

    A +

  10. #10
    Nouveau membre du Club
    Inscrit en
    Avril 2002
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 23
    Points : 35
    Points
    35
    Par défaut Bon allez on respire un bon coup et on reste zeeeeeeen ...
    Citation Envoyé par SQLpro
    Vous pouvez toujours essayer de chercher bêtement tout un tas de trucs. Cela ne sert à rien.
    j'ai donné une méthode qui est celle appliquée depuis plus de 20 ans par les professionnels, mais si vous ne voulez pas vous en servir il est inutule de polluer ce forum pas des idioties.

    A +
    Excuses-moi ô grand gourou SQL de ne point partager le même avis que le tien et de ne dire que des idioties *se prosterne bien bas*

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 32
    Points : 29
    Points
    29
    Par défaut
    Excuses moi SQLPro !! Mais ce que tu m'as fait c'est pas ce que je recherche.
    Miko a trouvé ce que je veux faire !

    Exemple :

    Aujourd'hui : 22/08/02
    Je veux tous les CV datant du : 01/08/02 jusqu'à aujourd'hui !!

    Merci de vos aides en tout cas

  12. #12
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 874
    Points : 53 045
    Points
    53 045
    Billets dans le blog
    6
    Par défaut
    Ta demande n'était donc pas claire.

    Il suffisait de faire un filtre WHERE avec BETWEEN :

    WHERE LaDateDuCV BETWEEN 2002-08-01 AND CURRENT_DATE

    A +

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 32
    Points : 29
    Points
    29
    Par défaut
    Merci de tes efforts. Sincèrement mais miko a parfaitement répondu à ma demande.

    Ta requête n'est valable que pour le mois d'aout !!

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 23/07/2002, 14h33
  2. soustraire deux dates ?
    Par joejoe dans le forum SQL
    Réponses: 2
    Dernier message: 19/07/2002, 15h53
  3. Generation d'evenements a une date precise
    Par pascalzzz dans le forum MFC
    Réponses: 2
    Dernier message: 04/06/2002, 15h21
  4. Réponses: 3
    Dernier message: 06/05/2002, 18h24
  5. Réponses: 3
    Dernier message: 19/04/2002, 00h11

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