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

MS SQL Server Discussion :

Select where date semaine précédente


Sujet :

MS SQL Server

  1. #1
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut Select where date semaine précédente
    Bonjour

    Existe-t-il une maniere elegante avec Sql Server de faire un select des dates correspondant a celles précédent la semaine en cours

    Utilisant ADO et Csharp je pourrais faire un calcul savant pour generer un Between mais si je pouvais integrer la syntaxe SQL directement dans une vue ce ne serai pas plus mal !

    Attention les semaines vont du Lundi au Dimanche et il ne faut pas négliger le passage du 1er Janvier !

    Merci de vos suggestions

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 995
    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 995
    Billets dans le blog
    6
    Par défaut
    Implémentez une table de calendrier et chercher sur la semaine n-1;

    http://sqlpro.developpez.com/cours/gestiontemps/

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Merci SQL Pro

    L'article plein d'enseignement

    Mais a mon avis la solution ici me donne le resultat attendu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Where MyDate between dateadd(week, datediff(week, 0, getdate()), -7) and dateadd(week, datediff(week, 0, getdate()), 0)

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 995
    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 995
    Billets dans le blog
    6
    Par défaut
    week ne donne pas la semaine ISO, mais la semaine américaine, c'est à dire commençant par un dimanche.
    Si tu veut la semaine ISO, en 2005 (et >) il faut utiliser ISOweek.

    De plus si la semaine est la première de l'année ta requête ne donnera rien !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    De plus si la semaine est la première de l'année ta requête ne donnera rien !
    Ca a pourtant l'air de marcher ! :

    N.B. : je suis en 2008

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select dateadd(week, datediff(week, 0, getdate()), -7),dateadd(week, datediff(week, 0, getdate()), 0);
    Résultat :2010-10-25 00:00:00.000 2010-11-01 00:00:00.000
    (between lundi a lundi)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select dateadd(week, datediff(week, 0, '2011-01-02'), -7),dateadd(week, datediff(week, 0, '2011-01-02'), 0);
    Résultat 2010-12-27 00:00:00.000 2011-01-03 00:00:00.000
    (between lundi a lundi)

    Je viens de constater ce que tu veux dire !

    Si je prends comme reference le '2011-01-02' le 2 étant un dimanche il me complete jusqu'au lundi du lendemain
    Par contre si je prends le Samedi j'aurai la semaine antérieure
    Pratiquement comme il s'agit d'un rapport sur l'activité de la semaine ouvrable ce n'est pas tres dérangeant

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/08/2012, 11h54
  2. select week where date
    Par nike7414 dans le forum Langage
    Réponses: 8
    Dernier message: 18/04/2012, 18h27
  3. [AC-2003] Selection date mois précédent
    Par fdalyon dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 09/04/2010, 12h02
  4. Select avec "date d'un premier élément" dans clause Where
    Par adrien357 dans le forum Requêtes
    Réponses: 9
    Dernier message: 05/11/2008, 15h27
  5. Select * Where {}
    Par Thomad dans le forum Langage SQL
    Réponses: 14
    Dernier message: 16/10/2003, 21h27

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