Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/03/2011, 10h10   #1
Futur Membre du Club
 
Homme
Médecin Département d'Information Médicale (DIM)
Inscription : janvier 2009
Messages : 77
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 : 77
Points : 18
Points : 18
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 :
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 :
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
Dr_No est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 12h52   #2
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
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 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
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...
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 13h28   #3
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
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.
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 13h52   #4
Futur Membre du Club
 
Homme
Médecin Département d'Information Médicale (DIM)
Inscription : janvier 2009
Messages : 77
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 : 77
Points : 18
Points : 18
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
Dr_No est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 14h07   #5
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
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 :
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
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 16h34   #6
Futur Membre du Club
 
Homme
Médecin Département d'Information Médicale (DIM)
Inscription : janvier 2009
Messages : 77
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 : 77
Points : 18
Points : 18
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
Dr_No est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 16h39   #7
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
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 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
CETTE syntaxe est interdite en 2005:
Citation:
DECLARE @Debut DATETIME ='2011-01-01 00:00:00'
DECLARE @Fin DATETIME = '2011-02-01 00:00:00'
Vous devez faire ceci:
Code :
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'
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 16h39   #8
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
hmmm
La version date un peu... essayez de séparer la déclaration de l'affectation :

Code SQL :
1
2
3
 
DECLARE @Debut DATETIME 
SET @Debut ='2011-01-01 00:00:00'
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 16h59   #9
Futur Membre du Club
 
Homme
Médecin Département d'Information Médicale (DIM)
Inscription : janvier 2009
Messages : 77
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 : 77
Points : 18
Points : 18
Par défaut YES!

Merci cela marche

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

En tous cas encore merci
Dr_No est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 17h10   #10
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
d'un peu de... 10 ou 11 ans...
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 18h05   #11
Futur Membre du Club
 
Homme
Médecin Département d'Information Médicale (DIM)
Inscription : janvier 2009
Messages : 77
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 : 77
Points : 18
Points : 18
Par défaut oooohhh

Cela commence à faire...
Dr_No est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 18h15   #12
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
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 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Il s'enflamme le aieeeuuuuu (un homme qui souffre apparemment )
Citation:
J'utilise SQL Server 2005
Disons 6 ans :-).
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 18h26   #13
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
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
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 18h27   #14
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
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 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Citation:
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
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h52.


 
 
 
 
Partenaires

Hébergement Web