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 :

SQL SERVER requête entre 2 dates à saisir manuellement


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Homme Profil pro
    Médecin Département d'Information Médicale (DIM)
    Inscrit en
    Janvier 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Médecin Département d'Information Médicale (DIM)
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2009
    Messages : 115
    Points : 60
    Points
    60
    Par défaut SQL SERVER requête entre 2 dates à saisir manuellement
    Bonjour

    Je veux faire une requête entre 2 dates à saisir manuellement au moment de lancer la requête

    Si je spécifie (peu importe ce qu'il y a dans le SELECT/FROM)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BETWEEN '20110101000000' and '20110201000000'
    cela fonctionne évidemment

    Je voudrais que la date soit à saisir au moment où j'exécute la requête, c'est à dire qu'au moment d'exécuter il soit demandé de saisir la date 1 puis la date 2

    Dans ACCESS je mets:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dbo_DATE Between [date debut mois(ex:20110101000000)] And [date debut mois suivant (ex:20110201000000)]));
    qui fonctionne mais cela ne marche pas avec SQL SERVER

    Merci

  2. #2
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Qu'est ce qui ne marche pas sous SQL SERVER? soyez plus précis? message d'erreur? Aucun résultat?
    Précisez la version de SQL SERVER...

  3. #3
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    SQL Server ne propose pas de formulaires, comme access.

    SQL Server est conçu pour être interrogé par des clients.

    D'ailleurs vous devez bien lancer votre commande depuis un client, que je suppose être SSMS...

    Dans quel contexte cette requête devra être utilisée ?

    Vous avez plusieurs solutions :
    Créez un programme externe dans votre langage préféré, qui permet de saisir les deux dates, interroge SQL Server avec la requête qui va bien, et affiche le résultat

    Si vous tenez à exécuter cela depuis SSMS, vous pouvez faire par exemple une procédure stockée qui prend les dates en paramètre.

    bref, c'est en fonction de votre besoin, (vous pouvez aussi lier SQL Server sous Access).

    Dites en plus sur le contexte, on pourra peut être vous aider à trouver une solution adaptée, mais ce que vous faites, tel que vous le faites, n'est pas possible avec SQL Server.

  4. #4
    Membre du Club
    Homme Profil pro
    Médecin Département d'Information Médicale (DIM)
    Inscrit en
    Janvier 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Médecin Département d'Information Médicale (DIM)
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2009
    Messages : 115
    Points : 60
    Points
    60
    Par défaut dates variables dans requeête SQL Server
    Bonjour et merci de votre réponse

    J'utilise SQL Server 2005 (je suis utilisateur final et je me sers de l'Analyseur de requêtes fourni avec comme Client)

    Je fais en quasi permanence des requêtes entre dates.

    Pour éviter (non pas que ce soit hyper contraignant) de ré-écrire la date dans la requête dans le WHERE avant de la lancer, j'aimerais pouvoir la saisir à chaque requête au moment où elle est lancée

    Je n'ai pas les compétences pour créer un programme me permettant de faire cela (et le rapport temps passé/bénéfice de l'outil serait dérisoire) et je ne sais pas non plus (d'ailleurs je doute que mon DSIO autorise l'utilisateur final à créer ses procédures) creer de procédures stockées.

    Je lie aussi SQL Server sous ACCESS, mais au fur et à mesure que je progresse dans ma connaissance du SQL, j'ai plutôt tendance à ne plus (vouloir) me servir d'ACCESS; d'où la demande

    Cordialement

  5. #5
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Donc si je comprend bien, vous gardez vos requetes dans un coin et vous les lancez à chaque fois en remplaçant les dates ?

    Dans ce cas, vous pouvez créer des variables et utiliser vos variables dans votre/vos requete(s).
    Ainsi vos dates sont déclarées une seule fois (une seule saisie donc) et en plus au début du script...

    Par exemple :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    DECLARE @Debut DATETIME = '2011-03-22 13:56:01'
    DECLARE @Fin DATETIME = '2011-03-22 13:56:01'
     
    SELECT MaColonne1, MaColnne2, @Debut
    FROM MaTable
    WHERE UneColonneDate BETWEEN @Debut AND @Fin
    AND UneAutreColonneDate > @Debut
     
    SELECT MaColonne
    FROM MonAutreTable
    WHERE EncoreUneAutreColonneDate < @Fin

  6. #6
    Membre du Club
    Homme Profil pro
    Médecin Département d'Information Médicale (DIM)
    Inscrit en
    Janvier 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Médecin Département d'Information Médicale (DIM)
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2009
    Messages : 115
    Points : 60
    Points
    60
    Par défaut
    Merci

    Oui...je garde en effet mes requetes dans un coin et les lance à chaque fois en remplaçant les dates! (d'où ma demande afin d'améliorer les choses!)

    je vais me pencher sur les modalités, condition, syntaxe etc de déclaration de variables, pour aller plus loin; mais vous me donnez déja la réponse générale au 'comment'

    Pour le cas particulier (en simplifiant ma requête et en me contentant de copier bêtement la syntaxe que vous m'envoyez)) j'ai cependant un message d'erreur:

    DECLARE @Debut DATETIME ='2011-01-01 00:00:00'
    DECLARE @Fin DATETIME = '2011-02-01 00:00:00'
    SELECT NOMNAISS, @Debut
    FROM IDSJR, IDPAT
    WHERE IDSJR.IUPATM=IDPAT.IUPATM
    AND IDSJR.DATSRTSJR BETWEEN @Debut AND @Fin


    Serveur*: Msg 139, Niveau 15, État 1, Ligne 1
    Impossible d'affecter une valeur par défaut à une variable locale.
    Serveur*: Msg 139, Niveau 15, État 1, Ligne 2
    Impossible d'affecter une valeur par défaut à une variable locale.
    Serveur*: Msg 137, Niveau 15, État 1, Ligne 4
    La variable '@Debut' doit être déclarée.

    Une idée?

    Version SQL 8.00.194

    Merci

  7. #7
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    CETTE syntaxe est interdite en 2005:
    DECLARE @Debut DATETIME ='2011-01-01 00:00:00'
    DECLARE @Fin DATETIME = '2011-02-01 00:00:00'
    Vous devez faire ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DECLARE @Debut DATETIME 
    SET @Debut ='2011-01-01 00:00:00'
    DECLARE @Fin DATETIME 
    SET @Fin = '2011-02-01 00:00:00'

  8. #8
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    hmmm
    La version date un peu... essayez de séparer la déclaration de l'affectation :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DECLARE @Debut DATETIME 
    SET @Debut ='2011-01-01 00:00:00'

  9. #9
    Membre du Club
    Homme Profil pro
    Médecin Département d'Information Médicale (DIM)
    Inscrit en
    Janvier 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Médecin Département d'Information Médicale (DIM)
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2009
    Messages : 115
    Points : 60
    Points
    60
    Par défaut YES!
    Merci cela marche

    Juste pour ma culture, la version date d'un peu de combien?

    En tous cas encore merci

  10. #10
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    d'un peu de... 10 ou 11 ans...

  11. #11
    Membre du Club
    Homme Profil pro
    Médecin Département d'Information Médicale (DIM)
    Inscrit en
    Janvier 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Médecin Département d'Information Médicale (DIM)
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2009
    Messages : 115
    Points : 60
    Points
    60
    Par défaut oooohhh
    Cela commence à faire...

  12. #12
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Il s'enflamme le aieeeuuuuu (un homme qui souffre apparemment )
    J'utilise SQL Server 2005
    Disons 6 ans :-).

  13. #13
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    non je ne m'enflamme pas, je ne lis pas au même endroit que toi

    Citation Envoyé par Dr_No Voir le message
    Serveur*: Msg 137, Niveau 15, État 1, Ligne 4
    La variable '@Debut' doit être déclarée.

    Une idée?

    Version SQL 8.00.194

    Merci

    (un Serveur en 2000 avec un SSMS en 2005 peut-être?)

    Bon pour résumer, ça date de longtemps, voire plus

  14. #14
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Serveur*: Msg 137, Niveau 15, État 1, Ligne 4
    La variable '@Debut' doit être déclarée.

    Une idée?

    Version SQL 8.00.194

    Merci
    Bien vu

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

Discussions similaires

  1. [2008R2] sql server : requête sous python comporte la division entre deux attributs
    Par noramokh dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 04/06/2014, 16h24
  2. [SQL Server] Sélection entre deux dates
    Par Gabrielly dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/06/2006, 14h51
  3. [sql server] requête sur dates et heures (format du résultat
    Par isachat666 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 21/02/2006, 13h48
  4. [Sql Server] Fusion d'une date et d'une heure
    Par Invité dans le forum Langage SQL
    Réponses: 4
    Dernier message: 20/07/2005, 14h55
  5. [SQL Server]Requête avec DateDiff
    Par sangokus dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 10/05/2004, 14h44

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