2008-12-11 6 views
3

Je possède un système de gestion des événements dans lequel je veux,Comment faire une recherche dans SQL?

Si un événement est enregistré pendant 5 jours (21 janvier 2009 au 26 janvier 2009) Ensuite, si une autre personne veut enregistrer un événement entre 22 jan 2009 à 24 jan 2009 alors il ne permettra pas de s'inscrire. Je veux vérifier cela en utilisant la requête SQL, alors s'il vous plaît dites-moi comment puis-je faire cela.

Répondre

4

SELECT *
des événements e
OU (@StartDate ENTRE e.startDate et e.endDate)
OU (@EndDate ENTRE e.startDate et e.endDate)
OU (@StartDate < e. startDate ET @endDate> e.endDate)

+0

D'une certaine façon, je ne pense pas qu'il soit déjà dans les procédures stockées ... – Tomalak

1

Rechercher DATEDIFF dans l'aide SQL.

5

Juste pour compléter d'autres réponses, vous avez un bon article sur How to Search for Date and Time Values Using SQL Server 2000

Il vous rappelle comment les valeurs date/heure sont stockés (deux types de données date/heure: datetime et smalldatetime)

Il souligne également Datetime et smalldatetime sont comme les types de données à virgule flottante, float et real, en ce qu'ils sont des nombres approximatifs. Cela signifie que la valeur extraite de SQL Server peut être différente de la valeur stockée à l'origine. De plus, il avertit les concepteurs de base de données qui n'utilisent pas toujours les colonnes de date/heure de façon appropriée. Au moment de la conception de la base de données, chaque colonne date/heure doit être identifiée pour indiquer si elle va stocker à la fois les dates et heures, les dates uniquement ou les heures.

Il se ferme avec practical queries on data/time. Vous avez également une bonne description de DATEADD and DATEDIFF here.

Questions connexes