2009-09-25 10 views
5

Comment sélectionner les enregistrements entre deux dates dans deux colonnes?Sélection d'enregistrements entre deux dates dans deux colonnes

Select * From MyTable Where 2009-09-25 is between ColumnDateFrom to ColumnDateTo 

J'ai une date (2009-09-25) et je tiens à sélectionner les enregistrements qui est dans le ColumnDateFrom de délai à ColumnDateTo.

échantillon

fiche 1 ColumnDateFrom = 01/08/2009 ET ColumnDateTo = 01/10/2009

la fiche 2 ColumnDateFrom = 01/08/2010 ET ColumnDateTo =

01/10/2010

Si ma date d'entrée est le 2009-09-28; puis-je obtenir fiche 1

+2

Sous quel moteur de base de données? –

+1

Et quel moteur de base de données particulier est-ce? Et comment allez-vous passer la date au SQL, en tant que littéral incorporé (c'est-à-dire dans le cadre du SQL) ou en tant que paramètre? Et quel framework client utilisez-vous pour parler à la base de données? Quelle est essentiellement votre question? La syntaxe SQL? Comment écrire en C# ou php ou autre? ou quoi? Parce que, idée-sage, vous avez raison, sauf que la syntaxe pour écrire la date est désactivée (mais j'ai besoin de savoir quel moteur de base de données vous utilisez pour vous dire ce qui est juste). –

+0

Merci, J'utilise SQL 2005 –

Répondre

1
select * 
from MyTable 
where ColumnDateFrom <= '2009-09-25' 
    and ColumnDateTo >= '2009-09-25' 
3

si je comprends bien, essayez ceci:

SELECT 
    * 
    FROM MyTable 
    WHERE ColumnDateFrom <= '2009-09-25' AND ColumnDateTo >= '2009-09-25' 
+0

Nice, mais j'aime mieux ... sélectionnez * de MyTable où '2009-09-25' entre ColumnDateFrom et ColumnDateTo –

+0

Merci beaucoup pour votre réponse rapide ... TRÈS NICE ! J'ai maintenant terminé et peux rentrer à la maison ... Je vous souhaite un bon week-end! –

+1

Je n'utilise jamais BETWEEN, je trouve plus facile à lire> =,>, <=, et/ou

4

Essayez ceci:

SELECT * FROM MyTable WHERE '2009-09-25' BETWEEN ColumnDateFrom AND ColumnDateTo 
+1

Merci, Fonctionne bien ... –

0

mysql:

select * from MyTable where '2009-09-25' between ColumnDateFrom and ColumnDateTo 
+0

Merci C'est la solution –

5

standard Entre devrait fonctionner (T-SQL).

SELECT * FROM MyTable WHERE @MYDATE BETWEEN ColumnDateFrom AND ColumnDateFrom 
0

supprimer juste le « est »

Select * From MyTable 
Where '2009-09-25' Between ColumnDateFrom to ColumnDateTo 

n'oubliez pas de considérer la portiomn de temps si les valeurs de la colonne ont la date et l'heure dans les ... (en supposant DATEONLY() est une fonction que les bandes l'heure à partir d'une colonne datetime)

Select * From MyTable 
Where '2009-09-25' Between DateOnly(ColumnDateFrom) 
         To DateOnly(ColumnDateTo) 
+0

Merci, Il fonctionne très bien avec et sans le temps portium –

+0

Cet appel de fonction sur la colonne de date va empêcher toute utilisation d'index est-il pas ? –

Questions connexes